4
12

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 3 years have passed since last update.

[Rails] form_with

Last updated at Posted at 2021-01-01

はじめに

下記の記事を参考させていただいております。
https://pikawaka.com/rails/form_with


form_withとは、railsで情報を送信するためのヘルパーメソッドです。
form_withを使うことにより、簡単に入力フォームに必要なHTMLを作成することができます。

ヘルパーメソッドとは
Railsにおける、主にビューでHTMLタグを出現させたりテキストを加工するために使用するメソッドの総称です。

ヘルパーメソッドの利点は
パスの指定やRubyの埋め込みなどの記述がシンプルになる
セキュリティ上の問題を解消できる

などです。


書き方とツール

基本的な書き方

データベースに保存しない場合のform_withの書き方


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

データベースに保存する場合のform_withの書き方

<%= form_with model: モデルクラスのインスタンス do |form| %>
  # フォーム内容
<% end %>

例えば下記のようなコードではこんなフォームがブラウザに表示されます。

new.html.erb
<%= form_with(model: @user, url: entrys_path, local: true) do |form| %>
  <h1>ユーザー名を入力</h1>
  <div class="field">
    <%= form.label :name, "名前(全角)" %>
    <%= form.text_field :name %>
  </div>
<% end %>

Image from Gyazo

ちなみにform_withの機能で、
引数として渡されたモデルクラスのインスタンスが中身の入ったインスタンスの場合、updateアクションへ処理を振り分け、

反対に、引数として渡されたモデルクラスのインスタンスが中身の入っていないインスタンスの場合は、createアクションへ処理を振り分けてくれます。

自動的に処理を振り分けてくれるので、メソッドの指定はしていません。


発展形の書き方
オプションをつける場合
<%= form_with model: モデルクラスのインスタンス, オプション, do |form| %>

フォームの内容
form.htmlタグ名 :カラム名

オプションとメソッド

オプション名 説明
urlオプション フォームの情報を送るリクエストのパスを指定。
methodオプション フォームの情報を送るリクエストのHTTPメソッドを指定。オプションの初期値は:postなので、postメソッドを指定する場合は省略できる。
localオプション リモート送信を無効にするかどうかを指定。trueにすると無効になる。

htmlタグメソッド 用途
form.text_field 一行のテキスト投稿フォーム
form.text_area 複数行のテキスト投稿フォーム
form.number_field 数値入力ボックスを生成
form.search_field 一行の検索フォーム
form.email_field メールアドレス入力ボックスを生成
form.check_box データベースの情報を使わないでチェックボックスを生成
form.collection_check_boxes データベースの情報を元にチェックボックスを生成
form.select 選択肢を作成
form.collection_select データベースの情報を元に選択肢を生成
form.file_field ファイル選択ボックスを生成
form.datetime_field 日時の入力欄を生成
form.date_select 日付選択ボックスを生成
form.hidden_field 非表示のフォーム
form.submit 送信ボタンの生成
4
12
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
4
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?