我需要创建一个从 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 循环或类似内容的选择标签?
谢谢
我需要创建一个从 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 循环或类似内容的选择标签?
谢谢
您可以使用以下方法将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(容器,已选择 = nil)
接受一个容器(哈希、数组、可枚举、你的类型)并返回一个选项标签字符串。
Range 是一个 Enumerable,因此f.select上面的两个调用都应该产生相同的结果。