Rails的选择选项 - 设置第一个选项为禁用,选择

问题描述:

我在Rails的形式有一个选择输入 -Rails的选择选项 - 设置第一个选项为禁用,选择

<%= f.select :store_type_id, @storeType.map{ |type| [type.store_type.capitalize, type.id] }, {include_blank: 'Select store type'} %> 

我怎样才能让这个第一个选项(“选择存储类型”)既禁用和选择?

在HTML相当于我要去的是

<option disabled selected>Select store type</option> 

谢谢!

有没有做这个(本地),这将确保跨浏览器功能的方式,但这里的一个答案:

# on store types 
def self.options 
    options = self.all.collect { |type| [type.capitalize, type.id] } 
    options.unshift(["Select Store Type", "0"]) 
    options 
end 

# in your form 
<%= f.select :store_type_id, options_for_select(StoreType.options, :disabled => "0") %> 

然而,你依赖于浏览器中选择禁用输入,这将与本身矛盾。 Chrome最新版会转到下一个未禁用的输入。

相反,您可能需要进行一些表单验证,以确保select的值不为空。

并保持未来的Ruby开发者快乐(和保持自己符合公约和最佳做法),请记住,Ruby的认可snake_casing的变量:)

+0

酷,谢谢!我明白你在说什么,但是,我可能会试着用验证来处理这个问题。 – skwidbreth

+0

如果我想禁用多个选项,该怎么办? –

+0

@ aldrien.h根据http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html,您可以将值传递给'disabled'键下的参数,例如'f.select:store_type_id, options_for_select(StoreType.options,:disabled =>%w {0 1 2 3 4 5})'' –