【问题标题】:Rails f.select with a default value, but a different place holderRails f.select 具有默认值,但占位符不同
【发布时间】:2018-06-25 22:30:55
【问题描述】:

我有这段代码可以为我生成一个默认值为 Unassigned 的下拉菜单。

但是,我想做的是在下拉菜单中有一个占位符,选择位置,尽管默认选择的值是“未分配”

代码:

= f.select :training_location_id, grouped_options_for_select(grouped_location_options, current_provider.locations.where(name: 'Unassigned').map { |loc| loc.id }), { placeholder: 'Select Location', include_blank: true }, class: 'form-control'

正如您在代码中看到的,我在 f.select { options } 中设置了一个占位符,但下拉菜单仍然显示“未分配”

智慧之言?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 form-helpers


    【解决方案1】:

    试试include_blank: 'Select Location'

    = f.select :training_location_id, grouped_options_for_select(grouped_location_options, current_provider.locations.where(name: 'Unassigned').map { |loc| loc.id }), include_blank: 'Select Location' , class: 'form-control'
    

    【讨论】:

    • 不幸的是,这不起作用...“未分配”的实例是从数据库中提取的,但我想简单地添加一个静态占位符,它基本上会提示用户选择一个位置(是的,我已经尝试过 prompt: '-- select location --' 没有效果)
    【解决方案2】:

    试试这个,这可能对你有用:

    = f.select :training_location_id, grouped_options_for_select(grouped_location_options, current_provider.locations.where(name: 'Unassigned').map { |loc| loc.id }), data: { placeholder: 'Select Location' }, class: 'form-control'
    

    【讨论】:

    • 不幸的是,这不起作用...“未分配”的实例是从数据库中提取的,但我想简单地添加一个静态占位符,它基本上会提示用户选择一个位置(是的,我已经尝试过 prompt: '-- select location --' 没有效果)
    【解决方案3】:

    1- 使用 find_by 或 where 代替使用 map 来获取选定的选项

     <%=f.select :training_location_id, grouped_options_for_select(grouped_location_options, current_provider.locations.where(name: 'Unassigned').first.id, {:prompt => '-- Select Location --'}),{class: 'form-control'}%>
    

    或者

     <%=f.select :training_location_id, grouped_options_for_select(grouped_location_options, current_provider.locations.find_by(name: 'Unassigned').id, {:prompt => '-- Select Location --'}),{class: 'form-control'}%>
    

    参考文献:=

    http://api.rubyonrails.org/v5.2.0/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-grouped_options_for_select

    【讨论】:

    • 不幸的是,这不起作用...“未分配”的实例是从数据库中提取的,但我想简单地添加一个静态占位符,它基本上会提示用户选择一个位置(是的,我已经尝试过 prompt: '-- select location --' 没有效果)我希望我可以发布一张图片来展示我在前端看到的内容!跨度>
    • @kdubss 请检查更新后的答案,如文档中所述,prompt 将用作占位符。让我知道以获得进一步的指导。
    • 刚刚测试过了,现在@Gabbar,不幸的是......没有骰子。
    • @kdubss 不确定,为什么这对您不起作用,我刚刚使用以下代码示例对其进行了测试:- &lt;%grouped_options = {'North America' =&gt; [['United States','US'], 'Canada'],'Europe' =&gt; ['Denmark','Germany','France']} %&gt; &lt;%=f.select :training_location_id, grouped_options_for_select(grouped_options, nil, {:prompt =&gt; '-- Select Location --'}),{class: 'form-control'}%&gt; 它显示了-- select location -- 的选项,你是遗漏了一些东西,你可以试试这个示例代码吗?
    • 嗨@Gabber!我一定会再试一次!我真正想要的是显示一个占位符,提示用户进行选择,但是,我希望将默认值设置为“未分配”,以防万一用户不做选择。在这种情况下,人员将被放置在“未分配”位置,而如果将位置设置为占位符字符串,则人员位置分配将丢失...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2019-08-08
    • 2012-11-02
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多