2012-09-03 14 views
32

chciałbym przekazać obiekt form_for do częściowej:Szyny przechodzące form_for obiektu częściowy

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

Kiedy zadzwonić:

f.radio_button 

Przynosi błąd:

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

Jak mogę użyć f, jak zwykle w tym częściowym?

Odpowiedz

49

Spróbuj forma przekazaniem obiektu jako lokalny <%= render :partial => "price_page", :locals=>{:f=>f} %>

+1

pracował jak leczyć. Dobra robota – Harry

+1

wow, dziękuję, że to działało dla mnie .... + 1 z przyszłości =) –

+0

Jedyny problem jaki miałem z tym, to że nie możesz włączyć 'nested_form' wewnątrz częściowego. Zwraca błąd. – bcackerman

7

można przekazać przedmiotu forma budowniczy jako zmiennej lokalnej jak poniżej,

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

w częściowego pliku będziesz otrzymywać formularz budowniczy jako zmiennej lokalnej "f", możesz użyć jak poniżej,

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

Naprawdę ????? zrobiłeś dokładnie tak, jak poprzedni facet –

+0

Tak, ale tylko kilka minut później! –

+0

Tak, więc jestem brutalny o pośpiechu, aby być pierwszym, który odpowie. – count0

5

Natknąłem się na to pytanie próbując dowiedzieć się, jak uzyskać formularz builde r na częściowe bez dodatkowego znacznika formularza. Jest to główny przypadek użycia, jaki mogłem wymyślić dla tego pytania, więc dodam tę odpowiedź dla przyszłych użytkowników.

Aby rozwiązać mój problem, mam form_for w moim układzie i renderuję moje częściowe przekazanie tylko modelu. W moim częściowym używam fields_for.

Looks (coś) tak:

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

Następnie mój częściowy ma to:

= fields_for price do |f| 
    ...