如何从rails中的范围构建选择标记

我希望有一个下降值,包含值10%20%30%,所以直到100。

在ruby中它可以通过

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

我该如何将其转换为选择标签?

我试过了:

  

但这是打印10 11 12 13....100

你几乎拥有它:

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

#step返回一个枚举器(或者如你所示,得到)。 看起来你想要的是在这个枚举#collect上调用#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 %>  

使用默认值

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