2009-05-21 9 views
19

http://weblog.rubyonrails.org/2009/1/26/nested-model-formscome gestire più modelli in una forma rotaie

Questo post ha aiutato a imparare a gestire più modelli in una forma rotaie. Funziona fintanto che i modelli sono nidificati. cosa succede se non lo sono? diciamo, ho un modulo, in cui l'utente riempie i dettagli personali, i dettagli dell'indirizzo e un gruppo di checkbox che specificano i suoi interessi. Ci sono almeno 3 tavoli coinvolti in questo unico modulo, qual è il modo migliore per gestirlo, senza avere 3 diversi pulsanti di salvataggio?

risposta

25

due opzioni:

Il primo è ActivePresenter che funziona bene per questo.

In secondo luogo si tratta solo di usare fields_for:

<%= form_for @user do |f| %> 

    <%=f.label :name %> 
    <%=f.text_field :name %> 

    <%= fields_for @address do |fa| %> 
     <%=fa.label :city %> 
     <%=fa.text_field :city %> 
    <% end %> 

<% end %> 

Poi nel controller, salvare i record.

@user = User.new(params[:user]) 
@address = Address.new(params[:address]) 

ActivePresenter funziona così bene però.

Inoltre ha trovato un railsforum post tramite Google, che funzionerebbe bene.

+0

Seconda opzione sembra molto semplice (avrei dovuto indovinato) sono venuto attraverso quel tutorial, ma solo per i modelli annidati anche se. Una domanda: cosa succede se ho avuto più indirizzi? – user85748

+0

Consiglio vivamente di evitare questo se puoi. Non è affatto piacevole per l'utente. Se devi semplicemente, dai uno sguardo a questo: http://blog.new-bamboo.co.uk/2007/8/31/presenters-conductors-on-rails Puoi anche utilizzare gli array di moduli , ma non è qualcosa che posso spiegare in un commento, ed è astratto. –

+0

evitando di aggiungere più indirizzi che intendi? questo era solo un esempio, non ho intenzione di farlo. ma ci possono essere casi in cui sarà necessario. per esempio, quando l'utente sta inserendo i propri interessi (proprio come un esempio, non riesco a pensare a qualcosa di meglio) uno per ogni campo di testo. – user85748

Problemi correlati