Railsでcollection_selectのHTMLオプションを設定するにはどうすればよいですか?


82

Railsによって生成されたselectタグにクラスを追加するための構文が見つからないようですcollection_select。手助け?


1
あなたがやりたいことの例をいくつか挙げていただけますか?私はあなたの質問を理解していません。
2009

確かに...私はrailsの<%= f.collection_select ...%>を使用して次を生成しています:<select ...> ... </ select>必要なもの:<select class = "foo "...> ... </ select>
tybro0103 2009

回答:


180

多くのRailsヘルパーは複数のハッシュ引数を取ります。1つ目は通常、ヘルパー自体を制御するためのオプションであり、2つ目は、カスタムID、クラスなどを指定するhtml_optionsです。

メソッド定義は次のようになります。

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

パラメータリストに複数の「= {}」があることに気付くでしょう。これを使用するには、指定する最初のオプションのセットを実際には中括弧で囲む必要があります。

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

htmlクラス以外に指定するオプションがない場合は、空のハッシュプレースホルダーを配置するだけです。

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

追加のAPIドキュメントは、http//apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_selectで入手できます。


ああ、私はもう少し詳しくドキュメントを読むべきでした:)
tybro0103 2009

1
これは、.cssスタイルを変更してjQuery onchangeイベントを使用する方法を示すこの回答の拡張です<%= 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 2012

描いた、いい答え。collection_selectに関する私の疑問をすべてクリアします。
Swapnil Chincholkar 2012

あなたの答えはかなり正確です。どうもありがとう。
フランシスコキンテロ2015年

3
明確な説明ありがとうございます。これはRailsの巧妙なことの1つであり、RailsDocsでの文書化は不十分です。
lacostenycoder 2015

9
= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.