simple_form 通过关联在同一个表单上多次使用相同的属性

Posted

技术标签:

【中文标题】simple_form 通过关联在同一个表单上多次使用相同的属性【英文标题】:simple_form using same attribute multiple times on same form via associations 【发布时间】:2013-08-23 17:33:33 【问题描述】:

是否可以在这样的一种形式上具有相同的关联?

<%= f.association :classifications, label: "Recipient", collection: @classifications, input_html: class: "parent_recipients", as: :collection_select %>
<%= f.association :classifications, label: "Sub-recipient", collection: @sub_classifications, input_html: class: "sub_recipients", as: :collection_select %>

这样用户可以从这两个选择框中进行选择并将两个条目都保存到数据库中?

编辑:

<%= f.simple_fields_for :classifications do |c| %>
  <%= f.input :classification_ids, label: "Recipient", collection: @cat, as: :collection_select %>
  <%= f.input :classification_ids, label: "Sub-recipient", collection: @sub, as: :collection_select %>
<% end %>

【问题讨论】:

【参考方案1】:

您可以使用简单的表格嵌套模型支持:

<%= f.simple_fields_for :classifications do |c| %>
  <%= c.input :classification_attribute %>
<% end %>

确保您的父模型允许该关联接受嵌套属性:

accepts_nested_attributes_for :classifications

【讨论】:

当我尝试这个时,当我重复相同的属性选择时,:classification_attribute 的最后一个字段会覆盖所有其余字段。 :classification_attribute 只是一个示例,您希望将其替换为您希望用户为分类输入的属性。 用户是否真的在此表单上输入了分类信息,或者他们只是选择了其中的 0 个或多个与父级关联? 用户实际上是通过不同的字段在此表单上输入分类信息。其中 0 个或更多将不起作用,因为某些值不属于某些字段。我用我拥有的代码更新了主帖。它仍然在做同样的事情:最后一个字段是作为参数传递给控制器​​的字段。

以上是关于simple_form 通过关联在同一个表单上多次使用相同的属性的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义关联的Rails,simple_form和nested_models

无法让 rails 搜索表单与 simple_form 和 sunspot 一起使用

simple_form 上的星级不会发送表单值

将唯一 id 附加到 simple_form 生成的单选按钮输入,并将匹配值附加到关联标签

Rails 5 simple_form 将单选按钮标记为必需,如果未填写则阻止提交表单

simple_form 集合单选按钮