Ответ 1
Попробуйте передать объект формы как локальный
<%= render :partial => "price_page", :locals=>{:f=>f} %>
Я хотел бы передать объект 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
, как обычно, в этом частичном?
Попробуйте передать объект формы как локальный
<%= render :partial => "price_page", :locals=>{:f=>f} %>
Вы можете передать объект построителя формы как локальную переменную, как показано ниже,
<%= form_for @price do |f| %>
<%= render :partial => "price_page", :locals => { :f => f } %>
<% end %>
в вашем частичном файле вы будете получать конструктор форм в виде локальной переменной "f", вы можете использовать, как показано ниже,
<% f.radio_button, {} %>
Я столкнулся с этим вопросом, пытаясь понять, как получить конструктор форм в частичный без дополнительного тега формы. Это основной случай использования, который я мог бы подумать по этому вопросу, поэтому я добавляю этот ответ для будущих посетителей.
Чтобы решить мою проблему, у меня есть мой form_for в моем макете, и я делаю свою частичную передачу только модели. В моей частичной части я использую fields_for.
Выглядит (что-то) вот так:
= form_for @price do |f|
...
= render partial: "price_page", object: @price, as: 'price %>
...
Тогда мое частичное имеет это:
= fields_for price do |f|
...