2013-03-11 26 views
0

我嘗試創建一個通用模板,其中包括表單,其中包含動態內容,例如,由使用模板的視圖定義。作爲視圖渲染˚F(該formbuilder)未定義期間抱怨(我的當前參數impl。失敗。使用form_for在渲染視圖期間在模板中定義的formBuilder?

[1.9.6的Rails] 我稱爲模板 「LAY」

<%= form_for @q_object, :url => request.fullpath do |f|%> 
    <!--Do something that happens on every page --> 
    <table> 
     <%= yield %> 
     <tr><td style="text-align: center"> 
      <%= f.submit "Submit" %> 
     </td></tr> 
    </table> 
    <%end%> 

我的觀點

<tr><td> 
    <%= f.text_area :txt, :rows => 6, :cols => -1, :style => "width:100%" %> 
</td></tr> 

我控制器

class Controller < ApplicationController 
    layout "LAY" 

我的問題 在渲染過程中,視圖軌道抱怨f(formbuilder)未定義。

我做錯了什麼(顯然),但我怎麼能堅持執行的想法?

回答

0

我發現這是非常簡單的: 只是在模板創建的form_for,並在視圖中使用fields_for。 Fields_for給你一個formbuilder,但不會創建HTML表單...

<%=fields_for @q_object, nil, {:builder => MyFormBuilder} do |f|%> 
     <%= f.text_area :txt, :rows => 6, :cols => -1, :style => "width:100%" %> 
<%end%> 

PS:我發現沒有辦法從模板到視圖傳遞參數,如<%=產量AweSomeParameter%> ...

0

爲什麼你需要使這個佈局?您可以將其製作爲模板,然後爲每種您需要的表單類型創建部分模板。如果你這樣做,那麼你可以像這樣渲染你的個別部分,並將它們傳遞給表單構建器。

<%= render :partial => @unique_fields_name, :locals => {:f => f} %> 

我會用部分模板,但如果你真的想用一個局部佈局,然後簽上THIS問題的第二個答案。它解釋瞭如何設置局部佈局。此外,RailsGuides在渲染布局方面有很大的優勢,您應該結帳。

+0

這是另一種方式... – Dennis 2013-03-12 15:11:37

+0

哎呀!你是對的,我只是編輯我的文本,所以它不會讓人困惑,但看起來像你找到你的解決方案:)好! – 2013-03-12 22:29:25

+0

非常感謝;) – Dennis 2013-03-13 01:28:43

相關問題