Rails'de collection_select için HTML seçeneklerini nasıl ayarlarım?


83

Rails tarafından oluşturulan bir seçme etiketine sınıf eklemek için sözdizimini bulamıyorum collection_select. Biraz yardım?


1
Ne yapmak istediğinize bir örnek verebilir misiniz? Sorunuzu anlamadım.
klew

Elbette ... Oluşturmak için '<% = f.collection_select ...%> raylarını kullanıyorum: <select ...> ... </select> Sadece şöyle olmasını istiyorum: <select class = "foo "...> ... </select>
tybro0103

Yanıtlar:


181

Birçok Rails yardımcıları birden çok hash argümanı alır. Birincisi genellikle yardımcının kendisini kontrol etme seçenekleri, ikincisi ise özel kimlikleri, sınıfları vb. Belirlediğiniz html_options.

Yöntem tanımı şuna benzer:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

Parametreler listesinde birden çok '= {}' olduğunu fark edeceksiniz. Bunu kullanmak için, belirleyeceğiniz ilk seçenek kümesi aslında kaşlı ayraç içine alınmalıdır:

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'})

Html sınıfının yanı sıra belirtmek için herhangi bir seçeneğiniz yoksa, boş bir hash yer tutucusu koyun:

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'})

Ek API belgeleri şu adreste mevcuttur: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select


Ah, belgeleri biraz daha yakından
okumalıydım

1
İşte .css stilinin nasıl değiştirileceğini ve jQuery onchange olaylarının nasıl kullanılacağını gösteren bu cevabın bir uzantısı<%= collection_select(:question , :text, Question.all , :id, :text, {:prompt => 'Select Question...'}, {:class=>'input', :name=>'normalSelect', :id=>'normalSelect', :style=>'width:50%', :onchange=>"$('#accordion').accordion('activate',2);$('#blind').show('blind', 500)"}) %>
wantrapreneur

Drew, güzel cevap. Collection_select ile ilgili tüm şüphelerimi gideriyorum.
Swapnil Chincholkar

Cevabınız oldukça doğru. Çok teşekkürler.
Francisco Quintero

3
Net açıklama için teşekkür ederim. Bu, Rails'in aldatıcı şeylerinden biridir ve RailsDocs'ta yetersiz şekilde belgelenmiştir.
lacostenycoder

9
= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.