我现在有这个权利:
<%= f.select :credit, (0..500) %>
这将导致这样的:
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
...
我怎么会加入另一个选项选择将是“ 所有 ”和值应为零 ?
这几乎你想要什么:
<%= f.select :credit, ((0..500).map {|i| [i,i] } << ["No limit",nil]) %>
select
可以采取多种格式的选项列表。 其中之一是一个数组的数组,作为此处给出。 外阵列中的每个元素是一个2元素的数组,含有所显示的选项的文本和形式值以该顺序。
的map
上述匝(0..500)
成这样的阵列,其中,所述选项显示是相同的形式的值。 然后最后一个选项被添加。
需要注意的是无限的“被选中,这将“如果该参数(空字符串),”生产”的价值-如果你把一个选择栏成一种形式,提交表单,浏览器将送东西为形式参数,有没有办法送nil
为明确形式参数。 如果你真的想你可以使用一些巧妙的JavaScript来让浏览器不是在所有发送parmeter,但是这将是比简单地增加更多的工作:
param[:credit] == "" and param[:credit] = nil
到控制器的动作。
如果我理解正确的问题,你可以使用options_for_select
和prompt
,以比在所选择的答案显示更干净做到这一点了:
<%= f.select :credit, options_for_select(0..500), { prompt: "No Limit" } %>
请参阅该文档在这里: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select