Aus*_*wer 3 select ruby-on-rails list
我想从模型中提取颜色列表并将颜色选择列表放入视图中。选项具有颜色代码的价值。我想将选项的背景颜色更改为其值。以下是我尝试做的两种方法,但结果是它会改变整个选择列表的颜色,但不会改变具有单个颜色的单个选项的颜色。
<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>
Run Code Online (Sandbox Code Playgroud)
我希望它生成类似以下内容的内容:
<option value='color_code' style='background-color: color_code' >color_name</option>
Run Code Online (Sandbox Code Playgroud)
这样,选项中的颜色对用户也是可见的。
无论如何,我们可以自定义选项吗?
提前致谢。
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
Run Code Online (Sandbox Code Playgroud)
打电话像:
@colors = ["Red" => "#f00", "Blue" => "blue"]
select_tag("setting[bg_color]", options_with_colors(@colors))
Run Code Online (Sandbox Code Playgroud)