Sto facendo la mia vista personalizzata che ho bisogno di rendere il processo di creazione di modelli associati meno doloroso per i miei utenti. Voglio mostrare tutti i pezzi associati ai modelli in linea, con i controlli per modificarli. È piuttosto semplice eseguire il rollover per i campi base, ma preferisco usare un partial form_filtering_select
per le associazioni del modello inline, ma non riesco a trovare alcuna documentazione per farlo.Utilizzare i moduli rails_admin nelle visualizzazioni personalizzate?
risposta
C'è una bella gemma che fa più o meno quello che vuoi. Si chiama Nested Form Fields. Permette di modificare i record (insieme con le loro has_many associazioni) su una singola pagina. La cosa interessante è che utilizza anche jQuery per aggiungere/rimuovere dinamicamente i campi del modulo senza ricaricare la pagina. Scopri le gemme docs per l'uso corretto. Spero possa aiutare!
È possibile utilizzare Nested Form
consideri una classe User che restituisce un array di istanze del progetto dal metodo di lettore di progetti e risponde alla projects_attributes = metodo di scrittura:
class User
def projects
[@project1, @project2]
end
def projects_attributes=(attributes)
# Process the attributes hash
end
end
Si noti che il projects_attributes = scrittore è infatti necessario un metodo per fields_for per identificare correttamente: progetti come una raccolta e gli indici corretti da impostare nel markup del modulo.
Quando i progetti sono già un'associazione per l'utente è possibile utilizzare accepts_nested_attributes_for per definire il metodo di scrittura per voi:
class User < ActiveRecord::Base
has_many :projects
accepts_nested_attributes_for :projects
end
Questo modello può ora essere utilizzato con un fields_for nidificato. Il blocco dato alla vocazione fields_for nidificato verrà ripetuta per ogni istanza della collezione:
<%= nested_form_for @user do |user_form| %>
...
<%= user_form.fields_for :projects do |project_fields| %>
<% if project_fields.object.active? %>
Name: <%= project_fields.text_field :name %>
<% end %>
<% end %>
...
<% end %>
Qui va il Reference per i dettagli.
Hai un esempio di ciò che scriverei per elaborare l'hash degli attributi in questo esempio? – pappy
Ti fornirò la taglia se aggiungi un esempio utilizzando Campi modulo nidificati. – max