ruby-on-rails – 如何使用哈希数组填充select_tag?
发布时间:2020-12-16 19:50:52 所属栏目:百科 来源:网络整理
导读:在Rails 3.2应用程序中,我尝试添加一个从外部API调用获取其数据的选择字段.该数据作为散列数组返回: [{"name"="NameA","id"="001"},{"name"="NameB","id"="002"}] 如何使用这些数据来构建一个如下所示的选择字段: select option value="001" NameA /option
在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"]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |