散列到Rails中的哈希数组

时间:2015-09-21 21:37:15

标签: ruby-on-rails arrays hash

在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查看了文档,但我不确定我的哈希数组是如何适应所有这些的。

1 个答案:

答案 0 :(得分:1)

options_for_select助手可以采用如下数组:

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

(选择助手在内部使用options_for_select,因此,根据您的使用情况,它会使这更加简单) 所以你需要的只是将你的哈希数组转换成上面的形式。例如:

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