Rails 3 fields_for - порядок сортировки теряется
Я использую Rails 3.0.3 с ruby 1.9.2p0.
В моих profile_controller (функция редактирования) у меня есть этот вызов
@profile = Profile.find(params[:id])
@profile_items = @profile.profile_items.order("pos")
чтобы получить @profile_items в правильном порядке, отсортированный по "pos".
В _form.html.erb у меня есть следующий
<% @profile_items.each do |pi| %>
<%= pi.pos %> |
<% end %>
<%= f.fields_for :profile_items do |f2| %>
<%= render 'profile_item_fields', :f => f2 %>
<% end %>
3 первые строки - это тестовый код, показывающий, что @profile_items находятся в правильном порядке.
Но когда они оказываются, они потеряли упорядоченный порядок!
Теперь у меня есть много поисков ответа, и я думаю, что это должна быть обычная "ловушка" для
впадать в.
Спасибо за любую помощь...
Ответы
Ответ 1
В соответствии с документацией Rails для fields_for вы также можете указать объект записи после имени записи.
Итак, что-то вроде этого должно работать...
<%= f.fields_for :profile_items, @profile_items do |f2| %>
<%= render 'profile_item_fields', :f => f2 %>
<% end %>
Ответ 2
Это может быть выполнено с помощью default_scope для вложенной модели:
class YourModel < ActiveRecord::Base
belongs_to :other_model
default_scope { order(:name) }
end