【问题标题】:How can I map data from associations in "Edit" Forms in Rails?如何在 Rails 的“编辑”表单中映射关联数据?
【发布时间】: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


    【解决方案1】:

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

    实际上,这几乎完全是您的问题。干得好瑞恩·贝茨。

    【讨论】:

    • 嘿,我很乐意将此作为答案.. 但有一个问题。在他对 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 被定义了吗?
    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多