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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

2608閲覧

Rails5で作成したドロップダウンメニューの値の保存方法をご教授お願します。

koume

総合スコア458

Ruby on Rails 5

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2019/07/02 11:37

編集2019/07/02 11:44

Railsアプリケーションを作成しています。都道府県の入力フォームをドロップダウン形式にしたくて以下のようにHTMLを記述しました。

コントローラ def new @account = Client.new end new.html.erb <% @title = '新規登録' %> <h1><%= @title %></h1> <div id="generic-form"> <%= form_for @account, url: :client_user do |f| %> <%= render 'form', f: f %> <div class="buttons"> <%= f.submit '登録' %> <%= link_to 'キャンセル', :client_root %> </div> <% end %> </div>
_foum.html.erb <div class="account"> <%= f.label :postal_code, '郵便番号', class: 'required' %> <%= f.text_field :postal_code1, size: 5, required: true %> - <%= f.text_field :postal_code2, size: 5, required: true %> </div> <div> <%= f.label :prefecture, '都道府県を選択してください', class: 'required' %> <select name="country"> <option value="Japan" selected="selected" class="msg">1番目の要素を選択して下さい</option> <option value="Hokkaidou" class="Hokkaidou">北海道</option> <option value="Aomori" class="Aomori">青森</option> <option value="Iwate" class="Iwate">岩手</option> </select> </div> <div> <%= f.label :city, '市区町村', class: 'required' %> <%= f.text_field :city, required: true %> </div>

これで、都道府県のドロップダウンリストは表示できています。
これだと、ただ表示ができているだけでテーブルに保存ができないような感じがします。この値をテーブルに保存したいのですが、記述方法がわかりませんのでどなたかご教授お願いします。
それとも、この記述でRails側で勝手に保存してくれたりするのでしょうか?
保存先は Clientsテーブルのprefectureカラムとなります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<%= f.select ...... %>
などのドロップダウンリストに対応するビューヘルパーがいくつかありますので、そちらを検索して見てはいかがでしょうか?

また、createアクションや、現在のparamsを載せていただけるとより詳しいことがわかります!

投稿2019/07/02 11:56

junya451054

総合スコア69

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

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

koume

2019/07/02 14:32

回答ありがとうございます。なんかできたっぽいのですが、ソースコードをみていただけませんでしょうか? HTMLは以下のように記述しました。   <div> <%= f.label :city, '営業都道府県を選択して下さい', class: 'required' %> <%= f.select :city, [["選択してください", "rails_base", {class: 'form-control'}], ["北海道", "hokkaidou", {class: 'hokkaidou'}], ["青森県", "aomori", {class: 'aomori'}]] %> </div> ソースコードは以下になります。   <div> <label class="required" for="client_city">営業都道府県を選択して下さい</label> <select name="client[city]" id="client_city"><option class="form-control" value="rails_base">選択してください</option> <option class="hokkaidou" value="hokkaidou">北海道</option> <option class="aomori" value="aomori">青森県</option></select> </div> このように表示されていました。classも設定されて、valueも設定されていると思います。 これで解決できたという認識でいいのでしょうか?お手数をおかけしますが、よろしくお願いします。
junya451054

2019/07/03 03:27

値が実際に保存できていれば大丈夫だと思います! ただ、このままだと、何も選択していない時に、rails_baseという値が入ってしまいます。 ですので、以下のようにすると、何も選択していない時の対応ができると思います。 <%= f.select :city, [["北海道", "hokkaidou"], ["青森", "aomori"]], :prompt => "選択してください" %> また、個人的には、都道府県のテーブルを作成し、それを利用するのが、今後楽になると思いますので、余力があればお試しください。 @prefecture = Prefecture.all #controller <%= f.select :prefecture_id, @prefectures.map{|t| [t.name, t.id]} %> #View
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問