3

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

这是我的代码

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

下面是一些 us_states 的样子:

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

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

4

3 回答 3

4

通过将所选值作为参数传递给options_for_select助手来指定所选值。

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

文档在这里

于 2012-05-31T21:11:02.373 回答
1

结果我所要做的就是将第二个参数传递给 options_for_select。所以我得到了这个工作

options_for_select(us_states, @user.state)

于 2012-05-31T23:09:57.590 回答
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

就是这样!,谢谢!

于 2012-05-31T22:10:13.200 回答