在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后选择它)。是否有更简单的方法,例如向collection_select
添加选项?
感谢。
答案 0 :(得分:5)
根据the docs,它是prompt
参数中的options
选项:
collection_select(:post, :author_id, Author.find(:all),
:id, :name_with_initial,
{:prompt => 'Please select the author of this post'})
在表单构建器上使用collection_select
我们省略了第一个参数,所以在这种情况下:
f.collection_select :country_id, Country.order(:name), :id, :name, {prompt: 'Select your country'}
我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>
代码中,但它不在规范中,浏览器支持可能不完整,您仍然需要构建手动形成。