質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

727閲覧

Railsで作成したselect要素にclass名を付ける方法をご教授お願いします。

koume

総合スコア458

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/07/01 11:47

Railsアプリを作成しています。
ドロップダウンメニューで都道府県の選択メニューの表示は以下のコードでできています。

_form.html.erb <%= markup do |m| p = ClientFormPresenter.new(f, self) m << p.notes p.with_options(required: true) do |q| m << q.drop_down_list_block(:prefecture, '都道府県', Request::PREFECTURE_NAMES)
client_form_presenter.rb def drop_down_list_block(name, label_text, choices, options = {}) markup(:div, class: 'input-block') do |m| m << decorated_label(name, label_text, options) m << form_builder.select(name, choices, { include_blank: '選択してください' }, options) m << error_messages_for(name) end end
request.rb class Request < ActiveRecord::Base PREFECTURE_NAMES = %w( 北海道 青森県 岩手県 宮城県 秋田県 山形県 福島県 茨城県 栃木県 群馬県 埼玉県 千葉県 東京都 神奈川県 新潟県 富山県 石川県 福井県 山梨県 長野県 岐阜県 静岡県 愛知県 三重県 滋賀県 京都府 大阪府 兵庫県 奈良県 和歌山県 鳥取県 島根県 岡山県 広島県 山口県 徳島県 香川県 愛媛県 高知県 福岡県 佐賀県 長崎県 熊本県 大分県 宮崎県 鹿児島県 沖縄県 ) end
生成されたHTML <label class="required" for="client_prefecture">都道府県</label><select required="required" name="client[prefecture]" id="client_prefecture"><option value="">選択してください</option> <option value="北海道">北海道</option> <option value="青森県">青森県</option> <option value="岩手県">岩手県</option> <option value="宮城県">宮城県</option> <option value="秋田県">秋田県</option>

このような状態です。
現在、生成されたHTMLは <option value="北海道">北海道</option> になっていて class属性が指定されていない状態です。
これにclass属性を指定したいのですが、指定の仕方がわからず困っています。
たとえば

<option value="北海道" class="hokkaidou">北海道</option> <option value="青森県" class="aomori">青森県</option> <option value="岩手県" class="iwate">岩手県</option> <option value="宮城県" class="miyagi">宮城県</option> <option value="秋田県" class="akita">秋田県</option> としたいのです。 どなたかご教授お願いできないでしょうか?よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ActionView::Helpers::FormOptionsHelper#options_for_selectを使い、
配列にクラスを持たせればできます。

以下APIdockより抜粋

You can optionally provide HTML attributes as the last element of the array.

ruby

options_for_select([ "Denmark", ["USA", {class: 'bold'}], "Sweden" ], ["USA", "Sweden"])

=> <option value="Denmark">Denmark</option>

=> <option value="USA" class="bold" selected="selected">USA</option>

=> <option value="Sweden" selected="selected">Sweden</option>

options_for_select([["Dollar", "$", {class: "bold"}], ["Kroner", "DKK", {onclick: "alert('HI');"}]])

=> <option value="$" class="bold">Dollar</option>

=> <option value="DKK" onclick="alert('HI');">Kroner</option>

投稿2019/07/02 05:38

編集2019/07/02 08:44
Mugheart

総合スコア2344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koume

2019/07/02 10:52

回答ありがとうございます。わかりやすい回答で初心者の自分にはとても助かります。 今後ともよろしくお願いします。
guest

0

railsが提供しているselectのoptionを作るHELPERで、option毎にclassをつける方法は、私は未だ発見していません。
無いとすると対策は3案

  1. helperを自作する
  2. ベタで書く
  3. classを使わない方法を考える。

select の option 毎に class をつけて、何をしようとしているのか、それがわかると案3に対して色々な助言が得られると思います。

投稿2019/07/01 23:58

winterboum

総合スコア23333

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koume

2019/07/02 06:29

回答ありがとうござます。やろうとしていることは、ドロップダウメニューにおいて、都道府県を選択すると選択された都道府県の市区町村がドロップダウンメニュー選択になるようにしたいのです。よくある、住所の入力フォームです。javaScript(jQuery)を使って都道府県の入力フォームに選択された値のclassを取得し、それと同じclassを持っている市区町村をドロップダウンメニューに表示するようにしたいのです。こんなことをするのは初めてですので、質問させていただきました。
winterboum

2019/07/02 10:34

それですとネット上にたくさん情報があります。googleで調べてみて下さい。 select で引く方が当たるかもしれない
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問