我的Ruby on Rails3应用程序上有一个表单,带有一个下拉菜单,这是我当前选择选项的代码:
<%= f.select :phone_type, options_for_select(["Select One", "Cell", "Work", "Office", "Home", "Other"],:disabled => ["Select One"]), :class => 'genForm_dropBox' %>
根据我的理解,当有人打开页面时,这应该有“Select One”作为默认选项,但如果他们没有选择其他选项之一,则当他们点击提交时会显示错误。
在Safari,Chrome和IE7等浏览器中也是如此,但在Firefox和IE8中,它显示“Cell”作为第一个选项,因为Select One被禁用。
我希望它默认显示“Select One”,但在提交表单时将其作为不可用的选项。我需要将其编入控制器或模型中吗?或者我的表格编码错了吗?
答案 0 :(得分:31)
对于那些希望融入此功能的人来说,我采用了一种新的方法,从模型结束。由于需要填写所有字段以便用户提交并且没有收到错误警报,因此我将“提交一个”选项的默认值设置为空。您可以查看以下代码,了解我是如何做到的。
<%= f.select :phone_type, options_for_select([["Select One", ""], "Cell", "Work", "Office", "Home", "Other"]), :class => 'genForm_dropBox' %>
答案 1 :(得分:20)
这个更清洁:
<%= f.select :phone_type, [ 'Cell', 'Work', 'Office', 'Home', 'Other' ], :prompt => 'Select One' %>
:prompt参数生成一个空值的选项。
答案 2 :(得分:12)
在Rails 4中,这种方法对我很有用。
<%= f.select :status, options_for_status, {}, prompt: 'Select One' %>
与此同时,我已经在帮助器中定义了选项,以防止杂乱无章。
def options_for_status
[
['First Option','first_option'],
['Second Option','second_option']
]
end
答案 3 :(得分:3)
感谢所有提供答案的人。
我正在为我正在进行的项目提供类似的代码,我非常喜欢Ryan Burnette采用的方法。
这对我使用Rails 4.1.0起作用。
<%= f.select :season, options_for_seasons, :prompt => 'Select One' %>
然后我在助手中定义了选项。
def options_for_seasons
['Spring', 'Summer', 'Autumn', 'Winter']
end
我选择了:prompt => 'Select One'
,因为如果以前没有选择季节,我只想在编辑表单中列出“选择一个”选项。
答案 4 :(得分:1)
添加[“Select One”,“”]会使编辑屏幕始终显示“Select One”而不是存储的值。 Rails 3.1(2012年8月17日)
答案 5 :(得分:1)
可以是<%= f.select :phone_type, options_for_select(["Cell", "Work", "Office", "Home", "Other"]), :prompt => "Select One", :class => 'genForm_dropBox' %>