0

这是一个后续How to I serve data from an object's associations in rails forms?如何在Rails的“编辑”表单中映射来自关联的数据?

我想知道,我想用预先加载,以服务的文章的编辑页面对象的标签(以及那些通过关联的表保存的其他属性。在前面的问题,我被告知,我可以用协会预先加载预加载的数据。在IE控制器I充实到.find打电话包括

@article = Article.find(params[:id], :include => [:tags]) 

这将是巨大的,除了它有两个主要注意事项:首先,它将对象提供给表单中的字段,因此,在此示例中,编辑表单中的:标记字段将填充为:

[#<Tag id: 298, name: "Wondering">] 

不是

Wondering 

第二个需要注意的是,我不能为这些协会的自定义字段。例如,而不是有一个:tags字段我有一个:tag_list字段。在创建文章时,用户在此输入一些标签。在编辑时,:标签不会被名称映射并放入tag_list字段。我总是可以将此行添加到控制器:

@article.tag_list = @article.tags.map(&:name) 

但是我正在寻找一个更好的解决方案,因为我有很多字段,我会写这一点,这似乎是浪费代码行。

任何人都可以帮忙吗?

回答

1

看看这个Railscast Virtual Attributes。我很确定这会让你的生活更轻松。

其实,这几乎是你的问题。瑞安贝茨干得好。

+0

嘿,我很乐意将此作为答案..但有一个问题。在他的tag_names定义中,他使用“at-sign”tag_names || tags.map ..我试图实现这一点,但“at-sign”tag_names总是零(从表单提交没有承认f.text_field:tag_names使“at-sign”tag_names变量。“at-sign “tag_names被定义? – jay 2012-01-07 19:31:34

+1

'attr_writer:tag_names' – Azolo 2012-01-07 19:38:23

相关问题