gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中使用 group_by 和 fields_for?

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:57 26 4
gpt4 key购买 nike

我有一个有很多 child (选择)的模型。我需要使用 fields for 显示子项,但我真的想使用 group_by 根据每个选择的属性对它们进行分组。

我目前正在使用

accepts_nested_attributes_for :selections, :allow_destroy => true

所以我的表单看起来有点像这样:

<% form_for @match do |form| %>
<% form.fields_for :selections do |child_form| %>
<%= child_form.object.first_name %>
<%= child_form.check_box '_delete' %>
<%= child_form.label '_delete', 'Remove' %>
<% end %>
<%= form.submit %>
<% end %>

不太确定如何使用 group_by 对 :selections 进行分组。有什么建议吗?

最佳答案

这个问题有点含糊。我的解释是您希望按属性将相似的选择分组,因为它们出现在表单中。有点像这样:

  • 比赛表格
    • 选择表
      • 具有属性 A 的选择字段
      • 具有属性 A 的选择字段
      • 具有属性 A 的选择字段
      • 具有属性 B 的选择字段
      • 具有属性 B 的选择字段
      • 具有属性 C 的选择字段
      • 等等

group_by 运算符不是您想要的。它将所有符合条件的选择压缩为一个条目。

更好的选择是在为选择填充列表时使用顺序选项。在关联中指定该顺序甚至可能会更好。这将在不更改表单的情况下执行您想要的操作。

 has_many :selections, :order => "attribute"

但是这会导致您所有来自 match 的选择查询都按属性排序。如果这是一个问题,您可以为选择添加第二个 has_many 关系。

 has_many :selections
has_many :grouped_selections, :class_name => "selection", :order => "attribute"

accepts_nested_attributes_for :selections, :grouped_selections :allow_destroy => true

表单中需要更改的是 <% form.fields_for :grouped_selections %> .

关于ruby-on-rails - 如何在 Rails 中使用 group_by 和 fields_for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com