我希望有一个下拉值,其值为10%20%30%,所以直到100。
在ruby中可以通过
完成(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
答案 0 :(得分:15)
你几乎拥有它:
<%=p.select :thc, options_for_select((10..100).step(10).to_a.map{|s| ["#{s}%", s]})%>
答案 1 :(得分:4)
#step
返回一个枚举器(或者如你所示,得到)。看起来你想要的是在这个枚举器上调用#collect
。
<%=p.select :thc, options_for_select((10..100).step(10).collect {|s| ["#{s}%", s]})%>
答案 2 :(得分:4)
<%= select("sale", "discount", (10..100).step(10).collect {|p| [ "#{p}%", p ] }, { :include_blank => true }) %>
答案 3 :(得分:2)
如果你像我一样登陆这里,无需使用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>