как построить тег выбора из диапазона в рельсах - PullRequest
10 голосов
/ 10 февраля 2010

Я хочу, чтобы раскрывающийся список состоял из значений 10%, 20%, 30% и т.д. до 100.

В рубине Это можно сделать с помощью

(10..100).step(10) { |i| p i }

как я могу преобразовать это в тег выбора?

Я пытался:

<%=p.select :thc, options_for_select((10..100).step(10) {|s| ["#{s}%", s]})%>

но это печать 10 11 12 13....100

Ответы [ 4 ]

15 голосов
/ 10 февраля 2010

У вас почти было это:

<%=p.select :thc, options_for_select((10..100).step(10).to_a.map{|s| ["#{s}%", s]})%>
4 голосов
/ 10 февраля 2010
<%= select("sale", "discount", (10..100).step(10).collect {|p| [ "#{p}%", p ] }, { :include_blank => true }) %>
4 голосов
/ 10 февраля 2010

#step возвращает перечислитель (или возвращает, как вы показали). Похоже, что вы хотите позвонить #collect на этом перечислителе.

<%=p.select :thc, options_for_select((10..100).step(10).collect {|s| ["#{s}%", s]})%>

2 голосов
/ 28 мая 2015

Без предоставления отформатированного значения.

Если вы попали сюда, как я, без необходимости использовать step() или для предоставления отформатированного значения (например, "20%"), это хорошо икраткий метод:

<%= f.select :year, (2011..Date.today.year).to_a %>

<select id="report_year" name="report[year]">
  <option value="2011">2011</option>
  <option value="2012">2012</option>
  <option value="2013">2013</option>
  <option value="2014">2014</option>
  <option value="2015">2015</option>
</select>

со значением по умолчанию

<%= f.select :year, options_for_select( (2011..Date.today.year).to_a, Date.today.year ) %>

<select id="report_year" name="report[year]">
  <option value="2011">2011</option>
  <option value="2012">2012</option>
  <option value="2013">2013</option>
  <option value="2014">2014</option>
  <option value="2015" selected="selected">2015</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...