【问题标题】:Rails and forms: drop down with range of numbers and Unlimited轨道和表格:下拉数字范围和无限
【发布时间】:2012-04-06 04:03:50
【问题描述】:

我现在有这个:

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

如何在该选择中添加另一个选项,即“All”以及哪个值应为nil

【问题讨论】:

    标签: ruby-on-rails forms drop-down-menu


    【解决方案1】:

    这将几乎做你想做的事:

    <%= f.select :credit, ((0..500).map {|i| [i,i] } << ["No limit",nil]) %>
    

    select 可以为选项列表采用多种格式。其中一个是数组数组,如此处给出。外部数组中的每个元素都是一个 2 元素数组,按顺序包含显示的选项文本和表单值。

    上面的map(0..500) 变成这样的数组,其中显示的选项与表单值相同。然后添加最后一个选项。

    请注意,如果选择“无限”,这将为参数生成一个值“”(一个空字符串) - 如果您将选择字段放入表单并提交表单,浏览器将发送 该表单参数的东西,并且无法将nil 作为表单参数显式发送。如果你真的想要你可以使用一些聪明的 javascript 让浏览器根本不发送参数,但这比简单地添加更多的工作:

    param[:credit] == "" and param[:credit] = nil
    

    到您的控制器操作。

    【讨论】:

      【解决方案2】:

      如果我对问题的理解正确,您可以使用options_for_selectprompt 比所选答案中显示的更简洁:

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

      在此处查看文档: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多