【发布时间】:2012-01-07 01:29:27
【问题描述】:
这是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
第二个警告是我无法将这些关联提供给自定义字段。例如,我有一个 :tag_list 字段,而不是一个 :tags 字段。在创建文章时,用户在此处输入许多标签。在编辑时, :tags 不会按名称映射并放入 tag_list 字段。我总是可以将此行添加到控制器:
@article.tag_list = @article.tags.map(&:name)
但我正在寻找一个更优雅的解决方案,因为我有很多领域需要编写这个,而且这似乎是在浪费代码行数。
有人可以帮忙吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 forms associations eager-loading