如何创建带有哈希的分组哈希数组而不是Rails中的ActiveRecord的选择列表?

时间:2018-09-11 18:55:38

标签: ruby-on-rails

我正在尝试找出如何从具有哈希数组的哈希中显示分组列表。 我正在从另一个api来源获取信息并转换JSON,然后按区域分组。

@list ||= JSON.parse(@conn.get('/templates').body, symbolize_names: true)

@template_list = (@list.group_by {|k,v| k[:region]})

@template_list输出如下所示。

  

{“ EMEA” => [{:id =>“ 1563”,:url =>“ https://website.com”,   :name =>“ TemplateNameA”,:region =>“ EMEA”,:another_key =>“另一个   值”,:contain_count => 0},{:id =>“ 7819”,   :url =>“ https://website.com”,:name =>“ TemplateNameB”,:region =>“ EMEA”,   :another_key =>“另一个值”,:contain_count => 0}],   “ Central” => [{{:id =>“ 421”,:url =>“ https://website.com”“,   :name =>“ TemplateNameA”,:region =>“ Central”,:another_key =>“另一个   value“,:contain_count => 0}],” East“ => [{:: id =>” 12“,   :url =>“ https://website.com”,:name =>“ TemplateName1”,:region =>“东”,   :another_key =>“另一个值”,:contain_count => 0}]}

经过几次迭代,我最接近期望结果的是     <%= select_tag:template_id,grouped_options_for_select(@template_list)%>

这将导致拉出所有键/值对,而不是一个简短的清单。我想要的输出如下所示。

<optgroup label="East">
  <option value="12">TemplateName1</option>
  <option value="321">TemplateName2</option>
</optgroup>
<optgroup label="EMEA">
  <option value="1563">TemplateNameA</option>
  <option value="7819">TemplateNameB</option>
  <option value="2367">TemplateNameC</option>
</optgroup>
<optgroup label="Central">
  <option value="421">TemplateNameA</option>
</optgroup>

0 个答案:

没有答案