Možná jste narazili na požadavek nějakým způsobem stylovat jednotlivé položky (option) v helperech select nebo select_tag. Princip je jednoduchý – nejde to. Naštěstí v Rails není problém upravit přímo jejich nějakou část, pokud vám nevyhovuje (většinou pomocí vytvoření nové metody a nastavení aliasu pro původní název). Tenhle konkrétní příklad se dá vyřešit krátkým kusem kódu:

module ActionView
  module Helpers
    module FormOptionsHelper
      def options_for_select_with_styles(container, selected = nil)
        container = container.to_a if Hash === container
        options_for_select = container.inject([]) do |options, element|
          text, value = option_text_and_value(element)
          selected_attribute = ' selected="selected"' if option_value_selected?(value, selected)
          css_class = " class=\"#{element[1]}\"" if element[1] && element[1] != value
          options << %(<option value="#{html_escape(value.to_s)}"#{selected_attribute}#{css_class}>#{html_escape(text.to_s)}</option>)
        end
        options_for_select.join("\n")
      end
      alias_method_chain :options_for_select, :styles
    end
  end
end

Kód uložte do souboru s názvem form_options_helper.rb do adresře config/initializers a teď už můžete jednoduše jako druhý parametr přidat požadovanou CSS třídu (value se potom přesouvá na třetí místo).

Komentáře jsou uzavřeny.