0

我需要创建一个从 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 循环或类似内容的选择标签?

谢谢

4

1 回答 1

1

您可以使用以下方法将Range转换为 Array to_a

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

或者您可以f.select提供原始范围,它会to_a为您调用:

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

来自精美手册

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

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

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

  • 平面集合:见options_for_select
  • 嵌套集合:见grouped_options_for_select

options_for_select

options_for_select(容器,已选择 = nil)

接受一个容器(哈希、数组、可枚举、你的类型)并返回一个选项标签字符串。

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

于 2012-08-19T02:31:01.803 回答