Ответ 1
У вас почти было это:
<%=p.select :thc, options_for_select((10..100).step(10).to_a.map{|s| ["#{s}%", s]})%>
Я хочу иметь выпадающее значение, которое состоит из значений 10 %20% 30% и так далее до 100.
В рубине Это можно сделать с помощью
(10..100).step(10) { |i| p i }
как я могу преобразовать это в тег select?
Я пробовал:
<%=p.select :thc, options_for_select((10..100).step(10) {|s| ["#{s}%", s]})%>
но это печать 10 11 12 13....100
У вас почти было это:
<%=p.select :thc, options_for_select((10..100).step(10).to_a.map{|s| ["#{s}%", s]})%>
#step
возвращает счетчик (или дает, как вы показали). Похоже, что вы хотите вызвать #collect
в этом перечислении.
<%=p.select :thc, options_for_select((10..100).step(10).collect {|s| ["#{s}%", s]})%>
<%= select("sale", "discount", (10..100).step(10).collect {|p| [ "#{p}%", p ] }, { :include_blank => true }) %>
Если вы приземлились здесь, как и я, без необходимости использовать 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>