Rails 3: Почему поле выбора не передает правильное значение?

У меня есть следующее поле выбора, созданное с использованием вложенной формы:

<select name="product[shop_attributes][id]" id="product_shop_attributes_id">
  <option value="23">KMART</option>
  <option value="24">Super Shop</option>
  <option selected="selected" value="22">TARGET</option>
  <option value="new">Create New Shop</option>
</select>

selected="selected" был создан путем передачи параметров :selected => "22" в f.select.

Проблема в том, что независимо от того, какой вариант выбран, отправленное значение всегда равно "22".

Я заметил, что создается скрытый ввод, который, как мне кажется, вызывает проблему:

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

Таким образом, есть 2 элемента с id=product_shop_attributes_id.

Что может привести к созданию этого скрытого поля ввода?


Соответствующий код создания поля выбора:

<%= form_for @product do |f| %>
  <%= f.fields_for :shop do |sf| %>
    sf.select(:id, <options>, {:prompt => true, :selected => <default_value>})
  <% end %>
<% end %>

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

def edit
  @product = Product.find(params[:id]) # the select box indeed gets it's initial value from @product
end

def update
  @temp = params.inspect
end

update.html.erb:

<%= @temp %>

Я вижу здесь всегда одно и то же (независимо от того, какой вариант выбран):

"product"=>{"shop_attributes"=>{"id"=>"22"},...}

person Misha Moroshko    schedule 20.12.2010    source источник
comment
Вам не нужно передавать :selected — вы используете модельную форму. Вам это нужно только с select_tag.   -  person Paul Schreiber    schedule 20.12.2010


Ответы (2)


Нет ничего плохого в сгенерированном рельсами HTML. Вероятно, это то, как вы обращаетесь к нему в своем контроллере. Не могли бы вы опубликовать исходный код рельсов, который сгенерировал этот HTML, и код, который вы используете для его обработки?

person sethvargo    schedule 20.12.2010
comment
Я добавил соответствующую информацию к вопросу. Спасибо! - person Misha Moroshko; 20.12.2010
comment
Пожалуйста, смотрите мое обновление. Я заметил, что создается скрытое поле с тем же идентификатором. Что может быть причиной этого? - person Misha Moroshko; 20.12.2010
comment
Пожалуйста, вставьте остальную часть вашего ERB. - person Paul Schreiber; 20.12.2010

Проблема в том, что, как я уже упоминал в вопросе, скрытое поле ввода с тем же id, что и select.

Я открыл отдельный вопрос выяснить, почему это происходит.

person Misha Moroshko    schedule 20.12.2010