2012-09-03 22 views
32

我想的form_for對象傳遞到部分:導軌傳遞的form_for目的是局部

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

當我打電話:

f.radio_button 

帶來的誤差:

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

我如何使用f,正如我在這部分中通常所說的那樣?

回答

49

嘗試通過表單對象爲本地 <%= render :partial => "price_page", :locals=>{:f=>f} %>

+1

工作就像一種享受。好工作 – Harry

+1

哇感謝它爲我工作.... + 1從未來=) –

+0

唯一的問題,我與此是你不能在內部包含'nested_form'。返回錯誤。 – bcackerman

7

您可以通過表單生成對象像下面一個局部變量,

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

在你的部分文件,你將收到表單生成器作爲一個局部變量「F」,你可以使用如下,

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

REallyyy ?????你完全像前一個人一樣 –

+0

是的,但只有幾分鐘後! –

+0

是的,所以我急於成爲第一個回答。 – count0

5

我碰到這個問題跑,試圖找出如何讓一個形式builde將其轉換爲不帶附加表單標籤的部分。這是我能想到的這個問題的主要用例,所以我爲未來的訪問者添加了這個答案。

爲了解決我的問題,我有我的form_for在我的佈局和我渲染我的部分只傳遞模型。在我的部分我使用fields_for

外貌(東西)是這樣的:

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

然後,我偏有這樣的:

= fields_for price do |f| 
    ...