Подтвердить что ты не робот

Рельсы, передающие 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, как обычно, в этом частичном?

4b9b3361

Ответ 1

Попробуйте передать объект формы как локальный  <%= render :partial => "price_page", :locals=>{:f=>f} %>

Ответ 2

Вы можете передать объект построителя формы как локальную переменную, как показано ниже,

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

в вашем частичном файле вы будете получать конструктор форм в виде локальной переменной "f", вы можете использовать, как показано ниже,

  <% f.radio_button, {} %>

Ответ 3

Я столкнулся с этим вопросом, пытаясь понять, как получить конструктор форм в частичный без дополнительного тега формы. Это основной случай использования, который я мог бы подумать по этому вопросу, поэтому я добавляю этот ответ для будущих посетителей.

Чтобы решить мою проблему, у меня есть мой form_for в моем макете, и я делаю свою частичную передачу только модели. В моей частичной части я использую fields_for.

Выглядит (что-то) вот так:

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

Тогда мое частичное имеет это:

= fields_for price do |f|
   ...