我正在使用Rails 3.0.3和ruby 1.9.2p0。Rails 3 fields_for - 排序順序會丟失
在我profiles_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是正確的順序。 但是,當他們被渲染,他們已經失去了排序順序!
現在我已經搜索了很多答案,我認爲這一定是一個常見的「陷阱」 陷入。
感謝任何幫助......
小修改。如果你想保持記錄排序,不要在關聯中進行記錄。它會從數據庫中提取東西,並吹走你的臨時條目(比如那些沒有被保存的錯誤)。因此,而不是`@ profile_items.order('position')`做這樣的事情:`@ profile_items.sort_by(&:position)`。 – Grocery 2012-12-10 21:38:27
比使用默認範圍要好很多很多很多。 – 2015-09-03 11:16:25