2
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?

Form_withとは!

Posted at

form_withメソッドは、Railsで使うフォームの作成方法。これを使うとデータを入力する画面(フォーム)を簡単に作成できます。

たとえば、「商品を購入する」や「新しいユーザーを登録する」などの機能がある場合、それぞれのデータを入力するフォームが必要です。form_withメソッドは、このようなフォームを作成するのに便利です。

基本の使い方

<%= form_with model: @user do |form| %>
  <%= form.text_field :nickname %>
  <%= form.submit "登録" %>
<% end %>

model: @user の部分で、どのデータ(この場合はユーザー)を扱うフォームか指定します。
form.text_field :nickname は「ニックネーム」を入力するための箱を作ります。
form.submit "登録" は送信ボタンを作ります。
このように、form_withを使うと、HTMLを直接書かなくてもRailsが自動で適切なフォームを生成してくれます。

form_withでpathを記述するかどうかは、フォームがどこに送信されるかによります。

  1. pathを書かない場合
    form_with(model: @user)のように書いた場合、Railsは自動的にフォームの送信先を判断します。例えば、新規ユーザー登録ページで@userが新しいユーザーの場合、フォーム送信先はusers#create(ユーザー登録を行うアクション)になります。また、ユーザー情報を編集するページでは、送信先がusers#updateになります。このように、モデルを使うことで、Railsが自動的に適切なパスを選んでくれます。

  2. pathを書く場合
    明確なURLに送信したい場合や、モデルを使わないときはpathを指定します。たとえば、ログインフォームなど特定のURLに送信したいときはform_with(url: login_path)のようにurlオプションを使って送信先を指定します。

まとめ

pathを書かない → Railsが自動で送信先を決めてくれる。
pathを書く → 自分で送信先を指定したいときに使う。
このように、フォームが「新規作成」か「編集」かを自動で判断してくれるか、自分で送信先を決めたいかによって使い分けます。

2
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
2
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?