Hanno provato forum, documentazione e suggerimenti sul blog. Convergono in sintassi che per me non risparmi correttamente E instrado attraverso il controller desiderato.Sintassi per instradare Rails form_for al controller personalizzato
Immagine grande, ho due applicazioni software che condividono funzionalità. Per implementare funzionalità condivise, ho avuto Rails generare Shared :: Widgets. Questo MVC funziona bene. Nessun problema con la visualizzazione, l'aggiornamento, la creazione o l'eliminazione utilizzando il routing standard condiviso/widget & ecc.
Quindi, per la funzionalità specifica del prodotto, ho creato due controller: Product1 :: Widgets e Product2 :: Widgets. Entrambi ereditano dal controller Shared :: Widgets. Entrambi sono vuoti tranne per i layout specifici del prodotto.
Questo schema funziona quasi. Quando arrivo a product1/widgets, imposta il layout su product1 e invoca il metodo index di shared/widgets. Il risultato è la visualizzazione di shared/widgets/index.html.erb con layout di product1. Allo stesso modo, quando mi dirigo verso product2/widgets, questo imposta il layout di product2 e invoca il metodo index di shared/widgets. Il risultato è la visualizzazione di shared/widgets/index.html.erb con layout di product2. Perfezionare.
Ma ora arriviamo al form_for. Perché implementa la magia delle rotaie, vuole davvero dirigersi direttamente al controller Shared :: Widgets. Ma non è quello che voglio. Voglio che venga indirizzato al controller del prodotto appropriato in modo da impostare il layout. Le guide hanno generato form_for era qualcosa di simile:
form_for(@shared_widget, :html => { :class => "form"}) do |f|
ho provato:
form_for([:product1, @widget], :html => { :class => "form"}) do |f|
ma che duplica namespace (product1_widget_shared_widget_path).
ho provato i seguenti tre formati, ognuno dei quali sembrano correttamente al percorso, e salvare il record, ma il record è vuota (colonne sono vuote):
form_for(@widget, url => "product1/widget", :html => { :class => "form"}) do |f|
form_for(@widget, url => url_for(:controller => "widget"), :html => { :class => "form"}) do |f|
form_for(@widget, url => url_for(:controller => "widget", :action => "create"), :html => { :class => "form"}) do |f|
Qualsiasi aiuto? Se il codice sopra ha errori di ortografia, è dovuto alla trascrizione. Il codice effettivo che ho usato è passato all'interprete. Grazie.