ruby-on-rails – 如何使用哈希数组填充select_tag?

在Rails 3.2应用程序中,我尝试添加一个从外部API调用获取其数据的选择字段.该数据作为散列数组返回:
[{"name"=>"NameA","id"=>"001"},{"name"=>"NameB","id"=>"002"}]

如何使用这些数据来构建一个如下所示的选择字段:

<select>
  <option value="001"> NameA </option>
  <option value="002"> NameB </option>
</select>

编辑:

感谢以下建议,我尝试了以下内容

A:

<%= select_tag 'model[field]',options_from_collection_for_select(@hash,:id,:name) %>

给出错误

undefined method `name' for {"name"=>"NameA","id"=>"001"}:Hash

B:

<%= select_tag 'model[field]',options_from_collection_for_select(@hash) %>

修复错误,但生成错误标记

<option value="{"name"=>"NameA","id"=>"001"}"> {"name"=>"NameA","id"=>"001"}</option>

所以我认为我的问题是正确地格式化数组的哈希,我不知道如何操作哈希数组,以解决如何做到这一点.

除非我完全看待磨损方向,否则我认为这个问题的关键在于重新格式化此问题顶部的数组:

{"NameA" =>"001","NameB" =>"002"}

这是甚么可能吗?如果是这样,怎么样?

解决方法

一个更好的方式只在一个命令:
<%= select_tag "model[field]",options_for_select(@array_of_hashes.map { |obj| [obj['name'],obj['id']] }) %>

用你的例子哈希:

irb> @array_of_hashes = [{"name"=>"NameA","id"=>"002"}]
=> [{"name"=>"NameA","id"=>"002"}]
irb> @array_of_hashes.map { |obj| [obj['name'],obj['id']] }
=> [["NameA","001"],["NameB","002"]]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...