这是我的haml代码:
-if params[:product_id]
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name),
placeholder: "Product", required: true,
value: Product.find(params[:product_id]).name
-else
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name),
:prompt => 'Select', placeholder: "Product", required: true
问题是当我检查元素时值很好:
<select id="product" name="product" placeholder="Product" required="required" value="Product 2">
<option value="1">Product 1</option>
<option value="2">Product 2</option>
<option value="3">Product 3</option></select>
即使接缝良好,选择也不是&#34;产品2&#34;的值,元素的值,是,但所选的值是&#34;产品1&#34 ;
我不知道为什么,我确定我会搞砸x)
编辑:
value: Product.find(params[:product_id]).id
value: Product.find(params[:product_id]).id.to_i
这种变化并没有改变问题中的任何内容
答案 0 :(得分:0)
当您通过值选项时,它会与选项标记的值属性匹配,而不是与其内容匹配。
尝试将值选项更改为
value: params[:product_id].to_i
编辑:刚才意识到需要将预先选择的值作为options_from_collection_for_select的最后一个选项传递:
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name, params[:product_id].to_i),
placeholder: "Product", required: true
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html