Можно ли отсортировать "встроенную" запись в виде рельсов?

У меня есть несколько вопросов, связанных с этой темой, и каждый раз, когда я пытаюсь найти какой-то подход, я спускаюсь в другую кроличью нору.

Я хотел бы знать, можно ли сортировать коллекцию атрибутов объединения объектов на основе некоторого значения в коллекции?

Например, в действии редактирования моего кода у меня есть

  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 %>

Все остальное пока работает для уничтожения родительского объекта и для создания. Я почти там или в миллионе миль?

1 ответ

Решение

Прогресс! Так что я не знал, что могу отсортировать поля в форме ниже

<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 %>
Другие вопросы по тегам