Rails 3: почему поле выбора не передает правильное значение? - PullRequest
0 голосов
/ 20 декабря 2010

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

<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"},...}

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

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

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

1 голос
/ 20 декабря 2010

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

...