【问题标题】:Rails 3.2: Select option not rememberedRails 3.2:不记得选择选项
【发布时间】:2012-05-31 20:07:10
【问题描述】:

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

这是我的代码

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

以下是一些 us_states 的样子:

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

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

【问题讨论】:

  • 当您删除:include_blank => true 时它是否正常工作?不接触任何其他代码?
  • 哎呀,不,它总是显示阿拉巴马州。更新了问题。
  • 请将其中一个问题标记为正确。最佳答案对我来说非常有效。

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


【解决方案1】:

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

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

文档here

【讨论】:

    【解决方案2】:

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

    options_for_select(us_states, @user.state)

    【讨论】:

    • 如果可以的话,我会给这个+10。
    • 虽然这是正确的,但我接受了奥格兹巫师的回答,这是相同的。宁愿接受别人的回答也不愿接受自己的回答。
    【解决方案3】:

    好的,轮到我了。

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

    下面的代码构成了选择框。

    <%= 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-07-08
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2011-02-21
    相关资源
    最近更新 更多