rails form_with form_for form for ruby-on-rails-3 order fields-for

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