Rails 3:为什么选择框不传递正确的值?
-
11-10-2019 - |
题
我有以下使用嵌套表单创建的选择框:
<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
正如我在问题中提到的那样,问题是带有相同的隐藏输入字段 id
作为 select
.
我打开了 单独的问题 调查为什么会发生这种情况。
其他提示
产生的HTML没有错。这可能是您在控制器中访问它的方式。您能否发布生成此HTML的原始Rails代码以及用于处理它的代码?
不隶属于 StackOverflow