Ruby on rails Rails集合\u选择默认选择

Ruby on rails Rails集合\u选择默认选择,ruby-on-rails,select,selected,collection-select,Ruby On Rails,Select,Selected,Collection Select,在Rails 4视图中,我有 <%= form_for @person do |f| %> <%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: "Select your country" %> ... <% end %> ... 我希望在加载页面时将“选择您的国家”选为默认值。一种方法是使用javascript(在加载dom后选

在Rails 4视图中,我有

<%= form_for @person do |f| %>
  <%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: "Select your country" %>
  ...
<% end %>

...
我希望在加载页面时将“选择您的国家”选为默认值。一种方法是使用javascript(在加载dom后选择它)。是否有一种更简单的方法,比如在
集合中添加一个选项\u select

谢谢。

根据,这是
选项
参数中的
提示符
选项:

collection_select(:post, :author_id, Author.find(:all),
                  :id, :name_with_initial,
                 {:prompt => 'Please select the author of this post'})
对于表单生成器上的
collection\u select
,我们省略了第一个参数,因此在本例中:

f.collection_select :country_id, Country.order(:name), :id, :name, {prompt: 'Select your country'}
我已经100%确认这是在运行Rails 4.1.6的我自己的应用程序上运行的,其中
提示符
include\u blank
做同样的事情

其工作方式是Rails将空值的
作为生成的
中的第一项注入(这是因为HTML规范对于选择输入的文本输入没有类似的
占位符)

可能失败的原因:

  • Rails没有使用
    selected
    属性标记prompt选项,我怀疑一些浏览器可能会选择呈现自己的空白条目,而不是列表中的第一个条目
  • 对于现有记录,如果Rails确定当前记录的
    country\u id
    与列表中的某个元素匹配,它会将该元素标记为选中的
    。这是预期的行为,但如果你做任何不标准的事情,这可能是一种痛苦

  • 如果您正被这些问题困扰,您可以选择手动构建表单(这里可能会使用来自\u collection\u for \u select
    的方法
    options\u)或使用javascript进行构建。还有一个未记录的
    默认
    属性,您可以添加到
    标记中,但它不在规范中,浏览器支持可能不完整,您仍然需要手动构建表单。

    感谢您为我搜索,但根据您的第一个答案,它不起作用(显然我已经在谷歌上搜索过了,还有
    include\u blank:“…”
    ,但是每当你刷新页面时,上次刷新之前选择的选项都会被选中)。@user2725109尝试这样写:
    谢谢你的评论。尝试了你的格式(将
    include\u blank:
    选择你的国家/地区放在{}内),但它没有解决问题,在刷新后,选择了“刷新前的最后一个选项”。@user2725109:当页面刷新时,它是否未显示在“选择”框中loaded@SLD.非常感谢您的回复。我试过了,但不起作用。
    include\u blank:'Prompt text'
    只作为
    选项
    工作,而不是
    html\u选项
    。尝试了所有不同的变化,但没有成功。