"NameA", "id"=>"001"}, {"na-6ren">
gpt4 book ai didi

ruby-on-rails - 如何使用散列数组填充 select_tag?

转载 作者:行者123 更新时间:2023-12-03 11:46:00 28 4
gpt4 key购买 nike

在 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

乙:
<%= 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"=>"001"}, {"name"=>"NameB", "id"=>"002"}]
=> [{"name"=>"NameA", "id"=>"001"}, {"name"=>"NameB", "id"=>"002"}]
irb> @array_of_hashes.map { |obj| [obj['name'], obj['id']] }
=> [["NameA", "001"], ["NameB", "002"]]

关于ruby-on-rails - 如何使用散列数组填充 select_tag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096126/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com