2010-01-01 36 views
2

我想从模型中拉出颜色列表并将颜色选择列表放入视图中。 选项有颜色代码的值。我想改变选项的背景颜色与其值相同。下面是我尝试做的两种方法,但是它出现了它改变了整个选择列表的颜色,但不是单个颜色的单个选项。ruby​​ on rails:如何更改选择列表中选项的BG颜色

<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> 

这样,在选择的颜色也给用户可见。

反正我们可以自定义选项吗?

在此先感谢。

回答

4

rails助手不支持这样的html_options。不过,您可以制作自己的帮手方法。

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)) 
+0

谢谢!它真的有效。 – AustinPower 2010-01-01 08:51:27

相关问题