在以下ERB中:
<%= form_for @my_model do |f| %>
<%= f.select :my_attribute, options_from_collection_for_select(@my_options, :attribute, :name), {class: "select-style"} %>
<% end %>
最后的HTML选项将应用于注入的HTML中生成的<select>
标记。如何提供将应用于注入的<option>
标记的HTML样式选项?
Rails文档explains how to do this when using options_for_select
,但不适用于使用options_from_collection_for_select
时。
答案 0 :(得分:2)
有趣的问题。你从哪里获得html选项?
比如,你想要一个所有选项的静态类:
<%= f.select :my_attribute, options_from_collection_for_select(@my_options.map{|o| [o.attribute,{class: 'select-style'},o.name], :first, :last) %>
原因,您可以从属性my_option
设置类。
诀窍是,options_from_collection_for_select
还从每个元素(哈希)中提取html选项,因此您必须构造元素以包含此哈希。
但是,您也可以使用options_for_select
(内部为options_from_collection_for_select
):
<%= f.select :my_attribute, options_for_select(@my_options.map{|o| [o.name,{class: 'select-style'},o.attribute]) %>
答案 1 :(得分:1)
在我看来,这个选项不可用。 你可以这样做:
<%= options_from_collection_for_select(@my_options.map { |o| [o.attribute, o.name, { class: 'option-style' }] }, :first, :second) %>
- 但它的丑陋。
只需使用options_for_select:
即可 <%= options_for_select(@my_options.map { |o| [o.attribute, o.name, { class: 'option-style' }] }) %>