2010-01-01 42 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

相關問題