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.

Ruby on Rails form_withの使い方

Posted at

初めに

form_tagしか使ったことがなく、form_withはじめてだったのでまとめてみた
基本は備忘録

form_with

railsで情報を送信するためのヘルパーメソッド

DBに保存するとき

# インスタンスが空ならcreateアクションへ
# 情報が入っているならupdateアクションへ
<%= form_with model: モデルクラスのインスタンス do |form| %>
  <!--フォーム内容 -->
<% end %>
# Contoroller
def new
  @user = User.new
end
# View
# newアクションで生成したインスタンスを指定する
<%= form_with model: @user do |form| %>
  <!--フォーム内容 -->
<% end %>

フォームの作り方

name属性の値をkeyにparamsで入力内容を送る
受け取り方はparams[:モデル名][:key]
通常はストロングパラメータを定義してハッシュで一括受け取り

# form.htmlタグ名 :カラム名
# カラム名は保存先のテーブルのカラム名を指定
<%= form_with model: @user do |form| %>

  <%= form.label :name %>
  <%= form.text_field :name, class: "hoge" %>
  
  <%= form.submit %>
<% end %>

DBに保存しないとき

name属性の値をkeyにparamsで入力内容を送る
scopeを省いた場合params[:key]で取得できる
scopeを用いた場合params[:スコープ名][:key]で階層が1つ深くなる

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

html属性の付け方

<%= form_with model: @user, id: 'new_form' do |form| %>
  <!--フォーム内容 -->
<% end %>

直接ControllerとActionを指定する

# Routeingがうまくいかない時は直接指定する
<%= form_with @user, url: {controller: 'users', action: 'index' } do  |form| %>
  <%= form.text_field :name %>
  <%= form.submit %>
<% end %>

参考

【Rails】 form_withの使い方を徹底解説! | Pikawaka
使用可能なhtmlタグや使い方は参考先を確認

[Rails]初学者がform_withの流れを整理・理解するための記事 - Qiita

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?