Rails和形式:下拉与数字的范围和无限(Rails and forms: drop down wi

2019-06-23 10:03发布

我现在有这个权利:

<%= 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>
...

我怎么会加入另一个选项选择将是“ 所有 ”和值应为零

Answer 1:

几乎你想要什么:

<%= 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

到控制器的动作。



Answer 2:

如果我理解正确的问题,你可以使用options_for_selectprompt ,以比在所选择的答案显示更干净做到这一点了:

<%= f.select :credit, options_for_select(0..500), { prompt: "No Limit" } %>

请参阅该文档在这里: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select



文章来源: Rails and forms: drop down with range of numbers and Unlimited