Раскрывающееся меню Ruby on rails <select>- как стилизовать или применить класс к параметрам? - PullRequest
5 голосов
/ 20 октября 2011

Как мне создать раскрывающееся меню цветов в ruby ​​на рельсах 3?

Я знаю, как это сделать в html, css и javascript следующим образом, но я не знаю, как в ruby ​​на рельсах 3.

В идеале, используя collection_select или collection_options_for_select, другие объекты коллекции, которые создают <select> и <options>.Используя их, было бы предпочтительнее вручную циклически проходить через коллекцию и выплевывать кусочки и стилизовать каждый кусочек, хотя это можно было бы сделать.

Частичный код того, что я пытаюсь получить:

<select>
<option value="">Highlight</option>
<option value="#000000" style="background-color: Black;color: #FFFFFF;">Black</option>
<option value="#808080" style="background-color: Gray;">Gray</option>
<option value="#A9A9A9" style="background-color: DarkGray;">DarkGray</option>

Полный код: 1012 *http://pietschsoft.com/post/2004/09/20/Color-the-background-of-items-in-a-Dropdown-box-in-your-HTML-pages.aspx

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Rails Helper options_for_select абсолютно позволяет вам предоставлять информацию о стилях для отдельных опций.

Это прямо из документации options_for_select

  options_for_select([ "Denmark", ["USA", {:class=>'bold'}], "Sweden" ], ["USA", "Sweden"])

дает

  <option value="Denmark">Denmark</option>\n<option value="USA" class="bold" selected="selected">USA</option>\n<option value="Sweden" selected="selected">Sweden</option>

и

  options_for_select([["Dollar", "$", {:class=>"bold"}], ["Kroner", "DKK", {:onclick => "alert('HI');"}]])

дает

  <option value="$" class="bold">Dollar</option>\n<option value="DKK" onclick="alert('HI');">Kroner</option>

А в вашем случае это будет

options_for_select([["Black", {:style => "background-color: Black; color: #ffffff"}],
                    ["Gray", {:style => "background-color: Gray"}],
                    ["DarkGray", {:style => "backgorund-color: DarkGray"}]])
2 голосов
/ 20 октября 2011

Встроенные помощники не поддерживают это, насколько я знаю. Однако вы можете бросить свой собственный с:

def options_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_colors(@colors))
...