如何将选定的值放在rails形式中?

时间:2014-11-10 15:00:15

标签: ruby-on-rails select ruby-on-rails-3.2 ruby-2.1

这是我的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

这种变化并没有改变问题中的任何内容

1 个答案:

答案 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