按照the docs,它在options
参数的prompt
选项:一个表单生成器,我们省略了第一个参数
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
)。
原因,这可能会失败:
- Rails不标注与
selected
属性的提示选项,我怀疑某些浏览器可能会选择使自己的空白项,而不是第一个列表中的
- 如果对于现有记录,Rails确定当前记录的
country_id
与列表中的某个元素相匹配,则将其标记为selected
。这是预期的行为,但如果你做任何非标准的事情都可能是一种痛苦。
如果你被这些问题困住了,你的选择是手动建立表单(方法options_from_collection_for_select
可能在这里使用)或在javascript中执行。还有一个可以添加到<option>
标签的未公开的default
属性,但它不在规范中,浏览器支持可能不完整,您仍然必须手动构建表单。
来源
2014-10-08 02:08:28
SLD
感谢您使用谷歌搜索,但根据您的第一个答案,它不起作用(很明显,我做了我的谷歌搜索,也有'include_blank:“...”',但是无论何时刷新页面,选择刷新前最后选择的选项)。 – user2725109 2014-10-08 03:26:25
@ user2725109试试这样写:'<%= f.collection_select:country_id,Country.order(:name),:id,:name,{include_blank:“Select your country”}%>' – anusha 2014-10-08 05:13:29
感谢您的评论。尝试过你的格式(在{}中放置'include_blank:'选择你的国家''),但是在选择刷新之前刷新最后一个选项后,它没有解决问题。 – user2725109 2014-10-08 07:25:32