Ruby on Rails form_for select field with class


200

これで壁に頭をぶつけている。タグを使用して単純な選択タグを作成したいのですf.selectが、何も機能しません。以下に例を示します。

<%= f.select(:object_field, ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 4'], :class => 'my_style_class')%>

わかりましたので、基本的には、フォームが送信されると値をに配置する単純なリストですobject_field。これはすべて機能しますが、ページのソースを表示してもクラスタグは含まれません。エラーは発生せず、すべてスキップされます。

誰かが何か提案があれば私はそれを大いに感謝します。

回答:


449

この方法を試してください:

<%= f.select(:object_field, ['Item 1', ...], {}, { :class => 'my_style_class' }) %>

selectヘルパーは2つのオプションハッシュを取ります。1つは選択用で、もう1つはhtmlオプション用です。したがって、必要なのは、項目のリストの後の最初のパラメーターとしてデフォルトの空のオプションを指定し、次にクラスを追加することですhtml_optionsです。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select


2
お金で、本当にありがとう、それはトリックをしました!私はそれが単純なものでなければならないことを知っていました、そしてもちろんそれはそうでした。
Patrick

私はhamlでこの方法を試しましたが、「要素のあるFirebugの要素を検査」クラスがここに表示されない理由がわかりません。 '、false]]、{}、{:class => "drop"、:style => "opacity:0;"})
Gagan Gami

@GaganGamiこのコードで動作するようにしました。 = f.select(:stars, [['Male', true], ['Female', false]], {}, {:class=>"form-control",:style=>"opacity: 0;"}) 不透明度を0に設定すると、フィールドが非表示になります。
ロバート

f.selectが最後にブロックを渡されている場合、私たちが何をすべきかを誰かが知っていますか?このクラスは、私が試したどの組み合わせでも通過しないようです。
Tashows

説明
ありがとう

21

このようにプロンプ​​トオプションを追加することもできます。

<%= f.select(:object_field, ['Item 1', 'Item 2'], {include_blank: "Select something"}, { :class => 'my_style_class' }) %>

12

この仕事は私にとって

<%= f.select :status, [["Single", "single"], ["Married", "married"], ["Engaged", "engaged"], ["In a Relationship", "relationship"]], {}, {class: "form-control"} %>

2

あなたはここで見ることができます: http //apidock.com/rails/ActionView/Helpers/FormBuilder/select

またはここ: http //apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

選択タグには最大4つのagrumentがあり、最後のagrumentはhtmlオプションです。つまり、ここにクラス、必須、選択オプションを配置できます。

= f.select :sms_category_id, @sms_category_collect, {}, {class: 'form-control', required: true, selected: @set}

selected: @set最初に置くとうまくいき{}ます。
user1515295 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.