2012-09-03 6 views
32

vorrei passare l'oggetto form_for ad un parziale:rotaie passano form_for oggetto parziale

<%= form_for @price do |f| %> 
    ... 
    <%= render :partial => "price_page", :object => @price, :as => :f %> 
    ... 
<% end %> 

quando chiamo:

f.radio_button 

porta l'errore:

undefined method `radio_button' for #<Price:0x3cb1ed0> 

Come posso usare f come di solito farei in questo parziale?

risposta

49

Try forma di passaggio oggetto come locale <%= render :partial => "price_page", :locals=>{:f=>f} %>

+1

funzionato come un ossequio. Buon lavoro – Harry

+1

wow grazie ha funzionato per me .... + 1 dal futuro =) –

+0

Unico problema che ho avuto con questo è che non puoi includere 'nested_form' all'interno del partial. Restituisce errore – bcackerman

7

È possibile passare oggetto form builder come variabile locale come qui di seguito,

<%= form_for @price do |f| %> 
    <%= render :partial => "price_page", :locals => { :f => f } %> 
<% end %> 

nel file parziale riceverete costruttore forma come variabile locale "f", puoi usare come sotto,

<% f.radio_button, {} %> 
+1

REallyyy ????? hai fatto esattamente come il ragazzo precedente –

+0

Sì, ma solo pochi minuti dopo! –

+0

Sì, SO brutale sul correre per essere il primo a rispondere. – count0

5

Mi sono imbattuto in questa domanda cercando di capire come ottenere un modulo r in un parziale senza un tag modulo aggiuntivo. Questo è il caso d'uso principale a cui potrei pensare per questa domanda, quindi aggiungo questa risposta ai futuri visitatori.

Per risolvere il mio problema, ho il mio form_for nel mio layout e renderò il mio passaggio parziale solo il modello. Nel mio parziale uso fields_for.

Sguardi (qualcosa) in questo modo:

= form_for @price do |f| 
    ... 
    = render partial: "price_page", object: @price, as: 'price %> 
    ... 

Poi, il mio parziale ha questo:

= fields_for price do |f| 
    ...