Rails 3: Почему пустая вложенная форма генерирует скрытое поле ввода?

Почему это:

# edit.html.erb
<%= form_for @product do |f| %>
  <%= f.fields_for :shop do |sf| %>
    # Nothing here
  <% end %>
<% end %>

генерирует скрытое поле ввода:

<input type="hidden" value="23" name="product[shop_attributes][id]" id="product_shop_attributes_id">

?

Соответствующий код контроллера:

def edit
  @product = Product.find(params[:id])
end

person Misha Moroshko    schedule 20.12.2010    source источник


Ответы (1)


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

person idlefingers    schedule 20.12.2010
comment
У меня проблема, связанная с этим. У меня есть форма редактирования, которая при отправке вставляет новый экземпляр в БД вместо редактирования экземпляра в скрытом поле. Не знаю, в каком направлении искать ответ... - person Donato Azevedo; 18.02.2014