Creazione di moduli per dati relazionali in Rails
-
22-07-2019 - |
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?
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.