如何映射Rails中“编辑”表单中的关联数据?

时间:2012-01-07 01:29:27

标签: ruby-on-rails ruby-on-rails-3 forms associations eager-loading

这是How to I serve data from an object's associations in rails forms?

的后续行动

我想知道,我想使用预先加载来为文章对象的编辑页面提供标签(以及通过关联表格保存的其他属性。在上一个问题中,我被告知我可以使用预先加载的关联来预加载那些数据。控制器中的IE我扩充了.find调用以包含

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

除非有两个主要注意事项,否则这将是很好的。首先是它为表格中的字段提供服务。因此,在此示例中,编辑表单中的:tags字段将填充:

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

而不是

Wondering

第二个警告是我无法将这些关联提供给自定义字段。例如,我没有:tags字段,而是有一个:tag_list字段。在创建文章时,用户在此输入多个标签。在编辑时,:标签不会按名称映射并放入tag_list字段。我总是可以将这一行添加到控制器:

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

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

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

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

实际上,这几乎是你的问题。干得好Ryan Bates。