0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails セレクトボックス作成

Last updated at Posted at 2023-03-30

対象者

  • Rails 初学者.

目次

  1. 実現したいこと.

  2. 作り方の全体像.

  3. 実際に手を動かして作ってみた.

1. 実現したいこと.

  • railsでセレクトボックスを作成してみる.
    ↓セレクトボックス
    スクリーンショット 2023-03-29 11.04.12.png

注意点:今回はセレクトボックスの選択肢はデータベースのカラムの値にします.
選択肢はcolorカラムの「クリーム、ホワイト,グレー」にします。
スクリーンショット 2023-03-30 22.36.33.png

作り方の全体像.

①form_withでフォーム作成.
②label作成.
③selectボックスの作成.

実際に手を動かして作ってみた.

form_withとは.
⇨フォームを生成するものです。
フォームとは?
スクリーンショット 2023-03-30 22.43.21.png

.
このようなアカウント登録する際に入力するものです.

form_withとは.
スクリーンショット 2023-03-30 15.03.43.png
⇨2つ(form_tagとform_for)の機能が1つになったもの

↑2つの機能の違いはデータベースにフォームの内容をデータベースに保存するかしないかです。

form_withは2つの書き方があります.
1つ目⇨form_withでform_tag(データベースに保存なし)の機能を使いたい時.
2つ目⇨form_withでform_for(データベースに保存あり)の機能を使いたい時.

今回は1つ目の方法で作成します。

<%= form_with url: "パス" do |form| %>
  <!--フォーム内容 -->
<% end %>

url: "パス"の部分はルーティングが入ります.
routes.rb↓

  get '/index', to: 'cats#index'

今回はcatsコントローラのindexアクションにフォームの内容を送りたいのでget '/index'のindexを指定します.

<%= form_with url: "/index" do |form| %>
  <!--フォーム内容 -->
<% end %>

#②ラベルの作成.
ラベルとは上のフォームの画像の「お名前」、「メールアドレス」などの部分.

<%= f.label :カラム名 %>
<%= form_with url: "/index" do |form| %>
<%= f.label :color,"毛色" %>
<% end %>

第二引数”毛色”がないと、colorと英語で表示するためわかりにいからです。

#③selectボックスの作成.

<%= f.select :カラム名、配列(選択肢の中身)、オプション %>

↑が構文です.
埋めてみると.

<%= f.select :color, ['ホワイト', 'クリーム','グレー'], { prompt: '選択してください' } %>

今回catテーブルの中のcolorカラムの中の「ホワイト」「グレー」「クリーム」という値の選択肢を使いたいので.
第一引数⇨colorカラム.
第二引数⇨ ['ホワイト', 'クリーム','グレー'].
第三引数⇨選択肢のデフォルト値
スクリーンショット 2023-03-29 11.04.12.png

以上です

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?