2016-01-29 239 views
3

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

謝謝!

回答

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的變量:)

+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})'' –

相關問題