Rails option_for_select 如何在下拉列表中显示两个哈希字段的组合

问题描述 投票:0回答:1

rails 6.1
ruby 3.1.1

在表单 (

form_for
) 上,我的
options_for_select
字段中有一个使用
:sort_order
的下拉选择框。它需要一个哈希值,并且当前将颜色显示为选项文本,这对用户来说不是很直观。我可以切换它并将数字显示为选择文本,但这对用户来说仍然可能不是很有帮助。我想组合哈希项中的键/值并在选项文本中显示。

<% sort_hash = {'platinum' => 1, 'diamond' => 2, 'gold' => 3, 'silver' => 4, 'bronze' => 5} %>

<tr>
  <td>Sort Order:</td>
  <td>
    <%= f.select(:sort_order, options_for_select(sort_hash), :prompt => "Select a Number") %>
  </td>
</tr>

# this produces:
<select name="living_muay_thai_badge[sort_order]" id="living_muay_thai_badge_sort_order"><option value="">Select a Sort Order</option>
<option value="1">platinum</option>
<option value="2">diamond</option>
<option value="3">gold</option>
<option value="4">silver</option>
<option value="5">bronze</option>
</select>

我想做的是让它在选项文本中一起显示

key: value
,如下所示:

<select name="living_muay_thai_badge[sort_order]" id="living_muay_thai_badge_sort_order"><option value="">Select a Sort Order</option>
<option value="1">1: platinum</option>
<option value="2">2: diamond</option>
<option value="3">3: gold</option>
<option value="4">4:silver</option>
<option value="5">5: bronze</option>
</select>

我还没有在网上找到任何线程来显示如何使用我的哈希值在

options_for_select
中执行此操作,并且我尝试的任何操作都不起作用。如果这能让这更容易的话,我可以重新计算哈希值。

帮忙?

提前致谢。

ruby ruby-on-rails-6 form-for
1个回答
0
投票

您只需更改哈希即可:

sort_hash = {
  "1: platinum" => 1,
  "2: diamond"  => 2,
  "3: gold"     => 3,
  "4: silver"   => 4,
  "5: bronze"   => 5
}

或动态更改它:

sort_hash = {
  "platinum" => 1,
  "diamond"  => 2,
  "gold"     => 3,
  "silver"   => 4,
  "bronze"   => 5
}.each_with_object({}) do |(key, value), hash|
  hash["#{value}: #{key}"] = value
end

#=> {"1: platinum"=>1, "2: diamond"=>2, "3: gold"=>3, "4: silver"=>4, "5: bronze"=>5}
© www.soinside.com 2019 - 2024. All rights reserved.