Domanda

Ho un modulo che devo visualizzare per una tabella che ha una relazione con un paio di altre tabelle. Ad esempio, ho una tabella "casi". (pensa, caso investigatore), has_one reclamante e has_one client.

Vorrei che il modulo visualizzasse i campi da compilare per i dati del caso, i dati del cliente e i dati del richiedente. C'è un modo semplice per farlo in modo che una volta inviato sia semplice come:

case = Case.new(params[:case])
case.save

Come sarebbe se inviassi e salvassi un modulo solo per i dati del caso?

È stato utile?

Soluzione

Sembra che tu stia cercando il metodo accetta_nested_attributes_for di activerecord. Dovrai creare il tuo modulo usando

- form.fields_for :claimant do |claimant_form|
  = claimant_form.text_field :name

Puoi trovare molte più informazioni in post del blog di Ryan Daigle

Altri suggerimenti

Non credo ci sia un modo in cui puoi semplicemente chiamare case.save e funzionerà.

Per creare il modulo, guarda usando fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605

fields_for ti consente di aggiungere campi che sono memorizzati in diverse variabili POST, quindi se hai impostato i campi correttamente, nel tuo nuovo metodo potresti potenzialmente fare qualcosa del genere:

claimant = Claimant.new(params[:claimant])
claimant.save

Che non è terribilmente più complicato.

Guarda i miei esempi di forme complesse sulla creazione di multi nidificati -modello forme. Questo è stato aggiornato per funzionare con accetta_nested_attributes_for di Rails 2.3.

Ti consente di nidificare tutte le associazioni in params [: case] come desideri. Quando chiami case.save anche tutto il resto verrà salvato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top