是否可以以 rails 形式对 "built" 记录进行排序?

Is it possible to sort a "built" record in a rails form?

我围绕这个主题提出了几个问题,每次我尝试某种方法时,我都会陷入不同的困境。

我想知道是否可以根据集合中的某些值对对象连接属性集合进行排序?

例如,在我的代码的编辑操作中,我有

  def edit
    Size.all.each do |size|
      unless @cake.sizes.exists?(size.id)
        @cake.cake_details.build(size_id: size.id, price: nil)
      end
    end
    @cake_details_collection = @cake.cake_details.order(:size_id)
  end

我想对它进行排序,因为构建的记录最后添加到表单中,这会使表单看起来不一致且令人困惑。

我之所以像上面那样,是因为在更新操作中,当复选框未选中且 text_field 留空时,我删除了所有关联。

这是我表格中与上述相关的部分:

<div class="field">
  <%= form.fields_for :cake_details do |details| %>
      <%= details.check_box :size_id, {}, details.object.size_id %><br />
      <%= details.text_field :price %><br />
  <% end %>

到目前为止,其他一切都在为销毁父对象和创建而工作。我是快到了还是在一百万英里之外?

进步了!所以我不知道我可以在下面的表格中对字段进行排序

<div class="field">
  <%= form.fields_for :cake_details, @cake.cake_details.sort_by(&:size_id) do |details| %>
      <%= details.check_box :size_id, {}, details.object.size_id %><br />
      <%= details.text_field :price %><br />
  <% end %>