ruby-on-rails-3 - form_with - select in ruby on rails
Rails 3 fields_for-orden de clasificación se pierde (2)
De acuerdo con la Documentación de Rails para fields_for , también puede especificar el objeto de registro después del nombre de registro.
Así que algo como esto debería funcionar ...
<%= f.fields_for :profile_items, @profile_items do |f2| %>
<%= render ''profile_item_fields'', :f => f2 %>
<% end %>
Estoy usando Rails 3.0.3 con ruby 1.9.2p0.
En mi profiles_controller (función de edición) tengo esta llamada
@profile = Profile.find(params[:id])
@profile_items = @profile.profile_items.order("pos")
para obtener @profile_items en el orden correcto, ordenados en "pos". En el _form.html.erb tengo los siguientes
<% @profile_items.each do |pi| %>
<%= pi.pos %> |
<% end %>
<%= f.fields_for :profile_items do |f2| %>
<%= render ''profile_item_fields'', :f => f2 %>
<% end %>
Las 3 primeras líneas son código de prueba para mostrar que @profile_items están en el orden correcto. ¡Pero cuando son rendidos han perdido el orden ordenado!
Ahora he buscado mucho por una respuesta y creo que esta debe ser una "trampa" común en la que caer.
Agradecido por cualquier ayuda ...
Esto se puede lograr con un default_scope en el modelo anidado:
class YourModel < ActiveRecord::Base
belongs_to :other_model
default_scope { order(:name) }
end