Rails 6.1:如何用option_for_select在下拉框显示哈希键值组合
解决方案
方法1:转换现有哈希为目标选项数组
你可以把原哈希转换成[显示文本, 选项值]格式的二维数组,再传给options_for_select,同时保留默认的提示选项:
<% sort_hash = {'platinum' => 1, 'diamond' => 2, 'gold' => 3, 'silver' => 4, 'bronze' => 5} %> <% # 把哈希键值对转成「数值: 名称」的显示格式,同时按数值排序 %> <% options = sort_hash.map { |name, num| ["#{num}: #{name}", num] }.sort_by { |item| item[1] } %> <%= f.select :sort_order, options_for_select([['Select a Sort Order', '']] + options), {}, class: 'form-control' %>
方法2:直接定义符合要求的选项数组(更直观)
如果允许调整数据结构,直接定义二维数组可以省去转换步骤:
<% sort_options = [ ['1: platinum', 1], ['2: diamond', 2], ['3: gold', 3], ['4: silver', 4], ['5: bronze', 5] ] %> <%= f.select :sort_order, options_for_select([['Select a Sort Order', '']] + sort_options), {}, class: 'form-control' %>
效果说明
两种方法生成的HTML都会和你预期的结构一致:每个选项的value为对应数字,显示文本是「数值: 名称」的格式,同时保留默认的空提示选项。
内容的提问来源于stack exchange,提问作者John Cowan
相关产品推荐
相关产品推荐

