Ruby on rails RubyonRails:如何更改选择列表中选项的BG颜色

Ruby on rails RubyonRails:如何更改选择列表中选项的BG颜色,ruby-on-rails,list,select,Ruby On Rails,List,Select,我想从模型中提取颜色列表,并将颜色选择列表放在视图中。 选项的值为颜色代码。我想将选项的背景色更改为其值。下面是我尝试过的两种方法,但结果是它改变了整个选择列表的颜色,而不是单个选项的颜色 <p> <b>Background color</b><br /> collection_select(:setting, :bg_color, @colors, :code, :name, options ={:prompt

我想从模型中提取颜色列表,并将颜色选择列表放在视图中。 选项的值为颜色代码。我想将选项的背景色更改为其值。下面是我尝试过的两种方法,但结果是它改变了整个选择列表的颜色,而不是单个选项的颜色

<p>
    <b>Background color</b><br />    
    collection_select(:setting, :bg_color, @colors, :code, :name, 
    options ={:prompt => "-Select a color"}, html_options = {:style => "background-color: #3f3"})
  </p>

  <p>
    <b>New Background color</b><br />
 select_tag("setting[bg_color]", "<option>-Select a color</option>" + 
  options_from_collection_for_select(@colors, :code, :name, html_options = {:style => "background-color: #3f3"})) 
  </p>
我希望它能产生类似于:

<option value='color_code' style='background-color: color_code'  >color_name</option> 
这样,用户也可以看到选项中的颜色

无论如何,我们可以自定义选项吗


提前感谢。

rails帮助程序不支持类似的html\u选项。不过,您可以创建自己的助手方法

def options_with_colors(colors)
  colors.collect do |color, code| 
    "<option value='#{code}' style='background-color:#{code};'>#{color}</option> "
  end.join
end
@colors = ["Red" => "#f00", "Blue" => "blue"]
select_tag("setting[bg_color]", options_with_colors(@colors))