use*_*109 2 select ruby-on-rails 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 %>
Run Code Online (Sandbox Code Playgroud)
每当加载页面时,我都希望"选择你的国家/地区"被选为默认值.一种方法是使用javascript(在加载dom后选择它).是否有更简单的方法来添加选项collection_select?
谢谢.
根据文档,它prompt是options参数中的选项:
collection_select(:post, :author_id, Author.find(:all),
:id, :name_with_initial,
{:prompt => 'Please select the author of this post'})
Run Code Online (Sandbox Code Playgroud)
与collection_select上一个表单生成器,我们省略了第一个参数,所以在这种情况下:
f.collection_select :country_id, Country.order(:name), :id, :name, {prompt: 'Select your country'}
Run Code Online (Sandbox Code Playgroud)
我100%确定这是对我自己的应用程序的工作运行的Rails 4.1.6,在那里prompt和include_blank做同样的事情.
它的工作方式是Rails注入一个空值<option>作为生成的第一项<select>(这是因为HTML规范没有类似于placeholder选择输入的文本输入).
原因可能会失败:
selected属性标记提示选项,我怀疑某些浏览器可能会选择呈现自己的空白条目而不是列表中的第一个country_id与列表中的元素匹配,则将其标记为selected.这是预期的行为,但如果你做任何非标准的事情,可能会很痛苦.如果您被这些问题所困扰,您可以选择手动构建表单(此方法options_from_collection_for_select可能在此处使用)或在javascript中执行.还有一个default可以添加到<option>标记的未记录属性,但它不在规范中,浏览器支持可能不完整,您仍然需要手动构建表单.