我正在尝试找出如何从具有哈希数组的哈希中显示分组列表。 我正在从另一个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>