rails中的动态选择框

时间:2012-08-19 02:18:54

标签: ruby-on-rails ruby ruby-on-rails-3

我需要创建一个从1到活动记录中定义的数字的选择框。这个数字会改变。

到目前为止,我知道我可以创建一个这样的选择框:

<%= f.select  :numbers, %w[1 2 3 4 5 6 7 8 9 10 ] %>

但我需要的是这样的事情:

<%= f.select  :numbers, %w[1..@user.number] %>

有没有办法在rails中创建一个漂亮的动态选择框,或者我是否需要在html中使用for循环或类似的东西手动创建select标签?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用to_a方法将Range转换为数组:

<%= f.select :numbers, (1 .. @user.number).to_a %>

或者你可以递送f.select原始范围,它会为你致电to_a

<%= f.select :numbers, 1 .. @user.number %>

来自fine manual

  

选择(对象,方法,选项,选项= {},html_options = {})

     

为提供的对象和方法创建一个选择标记和一系列包含的选项标记。如果对象可用,则将选择对象当前持有的选项。

     

choices参数有两种可能的格式,对应于其他助手的输出:

     
      
  • 扁平收藏:请参阅options_for_select
  •   
  • 嵌套集合:请参阅grouped_options_for_select
  •   

options_for_select says

  

options_for_select (container,selected = nil)

     

接受一个容器(hash,array,enumerable,你的类型)并返回一串选项标签。

Range是一个Enumerable,因此上面的两个f.select调用都应该产生相同的结果。