Rails 3.2:选择不记住的选项

时间:2012-05-31 20:07:10

标签: ruby-on-rails ruby-on-rails-3

我遇到一个奇怪的问题,我的选择选项在提交时不会被记住(并且验证失败,重新加载表单)。

这是我的代码

<%= form.select :state, options_for_select(us_states), :include_blank => true %>

以下是us_states的一些内容:

  def us_states
      [
        ['Alabama', 'AL'],
        ['Alaska', 'AK'],

无论我选择什么,它总是选择在选择框中显示空白选项。如果我根本不使用:include_blank,它总是只显示Alabama。所以它只显示第一个字段。

3 个答案:

答案 0 :(得分:4)

通过将其作为参数传递给options_for_select帮助程序来指定所选值。

<%= form.select :state, options_for_select(us_states, form.object.state), :include_blank => true %>

文档here

答案 1 :(得分:1)

事实证明我所要做的就是将第二个参数传递给options_for_select。

我的工作原理

options_for_select(us_states, @user.state)

答案 2 :(得分:0)

好的,轮到我了。

我会告诉你如何在我的应用程序中使用它, 示例

以下代码构成了选择框。

<%= select("product", "id",options_for_select(MobilesLists.get_colors(mobile.mobile_name))) %>

MobilesLists.get_colors的结果如下,

ruby-1.9.2-p290 :011 > MobilesLists.get_colors("Samsung Galaxy Y S5360")

=> [["black", 3], ["bubblegum pink", 5], ["fruity orange", 4], ["metallic grey", 1], ["silver platter", 6], ["white", 2]] 

返回一个数组数组。所以,现在它变成了,

 <%= select("product", "id",options_for_select([["black", 3], ["bubblegum pink", 5], ["fruity orange", 4], ["metallic grey", 1], ["silver platter", 6], ["white", 2]])) %>

以上示例生成以下HTML

<select id="product_id" name="product[id]"><option value="3">black</option>
<option value="5">bubblegum pink</option>
<option value="4">fruity orange</option>

<option value="1">metallic grey</option>
<option value="6">silver platter</option>
<option value="2">white</option></select>

现在,在我的控制器中,我将按如下方式访问该值

if !params[:product][:id].nil?

  @product_id = params[:product][:id].to_i

end

多数民众赞成!谢谢!