1
1

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を使って情報入力欄を実装する方法

Posted at

対象者

  • form_withを使って入力項目の作成を考えている方

目的

  • form_withの基礎構文を学んで、実装手順を抑えること

実際の手順と実例

1.前提

Rails tutolialのsample appを参考にしています。

  • ユーザー登録の新規登録フォームを作成しようとしています。
  • UsersController、Userモデル、new.html.erbに実装していきます

2.コントローラーの設定

下記のようにコントローラーに記載します。

users_controller.rb
class UsersController < ApplicationController

  def new
    @user = User.new
  end
end

以前メンターさんにご質問させていただいた際に、
「form_withが筆記用具だとしたらnewメソッドが紙みたいなもの」
的なニュアンスのこと仰っていて、すごくしっくり来た気がします。

つまり、コントローラーにnewメソッドを定義したインスタンス変数変数は必須ということです。

このように設定することで空のモデルを作成し、
空のモデルが代入されたインスタンス変数に代入され、
form_withに変数渡してフォ-ムとモデルが関連付けられます。

3.Viewの設定

基本的には下記のように記載します

<%= form_with model:インスタンス変数, url:”リンク先”, local:true do |hoge(ブロック変数)| %> 
<% end %>

前提例の情報を当てはめると

 <%= form_with(model: @user, local: true) do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :email %>
      <%= f.email_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Create my account", class: "btn btn-primary" %>
 <% end %>

ブロック変数fをそれぞれのフィールドタグに渡している形です。

代表的なフィールドは以下の通り

  • form.text.field
    • → 短めのテキストを入れるフォームができる
  • form.text.area 
    • → 長めの文章を入れるフォームができる
  • form.submit
    • → 送信ボタン作成

実際にはこの後情報を保存しないといけないので
createアクションで情報保存しないと行けないのですが今日はここまでです

参照

Rails チュートリアル 7.2.1 form_withを使用する

投稿者コメント

以前form_withでコントローラーにnewメソッドがないのに「なんで動かないんだ???」と悩んだことあったので記事にしてみました。(恥ずかしい、、、、)
私のような初心者の方の助力になれたらなと思います

My Profile

プログラミング学習歴3ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。 

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?