【问题标题】:Array of Hashes into dropdown in Rails在 Rails 中的下拉列表中的哈希数组
【发布时间】:2015-09-21 21:37:15
【问题描述】:

在 Rails 中,我有一个哈希数组 (@things),看起来像这样:

[
{"id"=>1, "name"=>"firstThing"}, 
{"id"=>2, "name"=>"secondThing"}, 
{"id"=>3, "name"=>"thirdThing"}
]

我还有一个 thingId 值为 2 (@otherThing.thingId = 2) 的对象。我想将数组变成一个带有空选项并选择 secondThing 选项的下拉列表(因为它的 id = 2)。

我用一些if, else 成功地构建了它并使用它来输出一些<option value... 代码,然后意识到这可能不是Railsy 的方式。不确定如何以最好的方式实现这一点。我已经查看了http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html 的文档,但我不确定我的哈希数组如何适应所有这些。

【问题讨论】:

    标签: ruby-on-rails arrays hash


    【解决方案1】:

    options_for_select 助手可以采用这样的数组:

    [
      ["firstThing", "1"],
      ["secondThing", "2"],
      ["thirdThing", "3"]
    ]
    

    (选择助手在内部使用 options_for_select,因此,根据您的用例,它使这更加简单) 因此,您只需将哈希数组转换为上述形式。比如这样:

    arrayForOptions = arrayOfHashes.collect { |item|
      [item['name'], item['id']]
    }
    

    【讨论】:

    • 好的,现在我已经按照您描述的方式转换了它,但是 options_for_select 的文档没有显示如何根据另一个变量的值选择正确的 id。你知道怎么做吗?
    • options_for_select调用的第二个参数是应该被选中的元素的id。
    • 知道了。为了获得空白选项,我还在我的收藏中添加了 .insert(0, "")。
    • 空白下拉选项也可以通过在输入元素include_blank: true中使用此标志来添加
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多