38

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このパーシャルで通常のように使用するにはどうすればよいですか?

4

3 に答える 3

56

フォームオブジェクトをローカルとして渡してみてください <%= render :partial => "price_page", :locals=>{:f=>f} %>

于 2012-09-03T11:27:31.223 に答える
8

以下のように、フォームビルダーオブジェクトをローカル変数として渡すことができます。

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

部分ファイルでは、フォームビルダーをローカル変数「f」として受け取ります。以下のように使用できます。

  <% f.radio_button, {} %>
于 2012-09-03T11:31:46.250 に答える
6

追加のフォームタグなしでフォームビルダーをパーシャルにする方法を見つけようとして、この質問に出くわしました。これは、この質問に対して考えられる主な使用例であるため、将来の訪問者のためにこの回答を追加します。

私の問題を解決するために、レイアウトに form_for を配置し、モデルのみを渡して部分的にレンダリングします。私のパーシャルでは、fields_forを使用しています。

このように(何か)見えます:

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

次に、私のパーシャルは次のとおりです。

= fields_for price do |f|
   ...
于 2014-09-01T21:01:53.907 に答える