2011-03-04 78 views
30

我有我的Ruby on一个下拉菜单Rails3中应用的形式,这是我选择选项,当前的代码:的Rails 3:f.select - options_for_select

<%= f.select :phone_type, options_for_select(["Select One", "Cell", "Work", "Office", "Home", "Other"],:disabled => ["Select One"]), :class => 'genForm_dropBox' %> 

从我的理解这应该有“选择一个“作为有人打开页面时的默认选项,但是如果他们没有选择其中一个选项,则在提交时会显示一个错误。

这是在像Safari和Chrome和IE7浏览器真实的,但在Firefox和IE8显示“细胞”为第一选择,因为选择一个被禁用。

我想它默认显示“选择一个”,而是把它作为不能使用选项,当他们提交表单。我是否需要将此脚本编写到控制器或模型中?或者我有这种编码形式错误?

回答

29

对于那些希望将这一功能,我已经采取了从事物的模型结束的新方法。由于所有字段都需要填写以便用户提交并且不会收到错误警报,因此我将“提交一个”选项的默认值设为无。你可以看看下面的代码,看看我是怎么做到的。

<%= f.select :phone_type, options_for_select([["Select One", ""], "Cell", "Work", "Office", "Home", "Other"]), :class => 'genForm_dropBox' %> 
+3

我想你也可以有':提示=>“选择一个”'或':include_blank =>中选择“选择一项”'好吧,我不知道,如果它的工作原理与options_for_select虽然 – GiH 2013-03-28 00:55:22

+0

':prompt =>'不适合我使用options_for选择,但':include_blank =>'做了。 – bigtex777 2013-07-26 19:24:21

1

添加[“选择一项”,“”]使编辑画面显示送花儿给人“选择一个”,而不是存储的值。 的Rails 3.1(2012年08月17)

19

这是一个小清洁器:

<%= f.select :phone_type, [ 'Cell', 'Work', 'Office', 'Home', 'Other' ], :prompt => 'Select One' %> 

的:提示参数生成具有空值的选项。

+0

'prompt'还有一点不错,那就是只有当你没有选择任何东西时才会提示你。如果你编辑你的phone_type并且你已经设置了一个值,你只能改变它们,但不能设置为空白:) – MMachinegun 2015-12-02 13:15:09

10

在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

感谢所有提供答案的人。

我需要一个类似的代码,用于我正在进行的项目,我非常喜欢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',因为我只是想,如果一个赛季以前没有被选中在编辑表格中列出了“选择一项”选项。

0

可能是<%= f.select :phone_type, options_for_select(["Cell", "Work", "Office", "Home", "Other"]), :prompt => "Select One", :class => 'genForm_dropBox' %>