Rails选择选项 - 将第一个选项设置为已禁用,已选中

时间:2016-01-29 00:38:36

标签: ruby-on-rails forms

我的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>

谢谢!

2 个答案:

答案 0 :(得分:1)

没有办法(本机地)确保跨浏览器功能,但这里 答案:

# 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你的变量:)

答案 1 :(得分:1)

您可以使用禁用并传递选项来禁用

<%= f.select :field_name, options, {disabled: ['disabled_option_1', 'disabled_option_2']}, {id: "Select"} %>