Sto usando Rails 3.0.3 con ruby 1.9.2p0.Rails 3 fields_for - l'ordinamento si perde
Nel mio profiles_controller (funzione di modifica) ho questa chiamata
@profile = Profile.find(params[:id])
@profile_items = @profile.profile_items.order("pos")
per ottenere i @profile_items nell'ordine corretto, ordinato il "POS". Nella _form.html.erb ho il seguente
<% @profile_items.each do |pi| %>
<%= pi.pos %> |
<% end %>
<%= f.fields_for :profile_items do |f2| %>
<%= render 'profile_item_fields', :f => f2 %>
<% end %>
Le 3 prime linee sono codice di prova per mostrare che le @profile_items sono nell'ordine corretto. Ma quando sono renderizzati hanno perso l'ordine ordinato!
Ora ho una ricerca molto per una risposta e penso che questa deve essere una "trappola" comune a cadere in.
grato per qualsiasi aiuto ...
Piccolo emendamento. Se si desidera mantenere ordinati i record, non farlo sull'associazione. Raccoglierà le cose dal database e spazzerà via le voci temporanee (come quelle con errori che non sono stati salvati). Quindi invece di '@ profile_items.order ('position')' fai qualcosa di simile a questo: '@ profile_items.sort_by (&: position)'. – Grocery
Molto, molto, molto, molto, molto, molto meglio dell'utilizzo di un ambito predefinito. –
... concorda con Grocery sul problema - ma i campi-per è implicito in base a 'accetta attributi nidificati per' - quindi non esiste @profile_items (utilizzando questo esempio) mai definito. Quindi, come ordinare la raccolta implicitamente generata? Ho trovato questa risposta qui: https://stackoverflow.com/questions/10505853/how-to-maintain-the-ordering-for-nested-attributes-when-using-accepts-nested-att – JosephK