med*_*rts 32 forms html-select ruby-on-rails-3
我在Ruby on Rails3应用程序上有一个表单,带有一个下拉菜单,这是我当前的select选项代码:
<%= f.select :phone_type, options_for_select(["Select One", "Cell", "Work", "Office", "Home", "Other"],:disabled => ["Select One"]), :class => 'genForm_dropBox' %>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,当有人打开页面时,这应该有"Select One"作为默认选项,但如果他们没有选择其他选项之一,则当他们点击提交时会显示错误.
在Safari和Chrome以及IE7等浏览器中也是如此,但在Firefox和IE8中,它显示"Cell"作为第一个选项,因为Select One被禁用.
我希望它默认显示"Select One",但在提交表单时将其作为不可用的选项.我需要将其编入控制器或模型中吗?或者我是否以错误的形式编码?
med*_*rts 34
对于那些希望采用这一功能的人来说,我采用了一种新的方法,从模型结束.由于需要填写所有字段以便用户提交并且没有收到错误警报,因此我将"提交一个"选项的默认值设置为空.您可以查看以下代码,了解我是如何做到的.
<%= f.select :phone_type, options_for_select([["Select One", ""], "Cell", "Work", "Office", "Home", "Other"]), :class => 'genForm_dropBox' %>
Run Code Online (Sandbox Code Playgroud)
dan*_*ker 20
这有点清洁:
<%= f.select :phone_type, [ 'Cell', 'Work', 'Office', 'Home', 'Other' ], :prompt => 'Select One' %>
Run Code Online (Sandbox Code Playgroud)
:prompt参数生成一个空值的选项.
rb-*_*rb- 12
在Rails 4中,这种方法对我很有用.
<%= f.select :status, options_for_status, {}, prompt: 'Select One' %>
Run Code Online (Sandbox Code Playgroud)
与此同时,我已经在帮助器中定义了选项,以防止杂乱无章.
def options_for_status
[
['First Option','first_option'],
['Second Option','second_option']
]
end
Run Code Online (Sandbox Code Playgroud)