💎
【Rails】form_forの使い方
form_for とは
モデルの新規インスタンスに値を追加して保存したい時に使用するヘルパーメソッド。
フォームが簡単に作成でき、入力されたデータをテーブルに保存できる。
フォームの作成
レビューのフォームを想定。 ###コントローラーの実装
reviews_controller.rb
def new
@review = review.new
end
def create
Review.create(create_params)
render action: :new #表示したいビューを表示
end
private
def create_params
params.require(:review).permit(:text)
end
ビューの実装
new.html.haml
%h1 Review
= form_for @review do |f|
= f.label :text, "レビュー"
= f.text_field :text
= f.submit "Send"
- モデルのインスタンスを引数に持つ。
- 引数のインスタンスが何も情報を持っていなければ create アクション、すでに情報を持っている場合は update アクションに自動的に振り分けられる。
フォームに入力された値は、submit ボタンを押した瞬間にモデルクラスの新規インスタンスにそれぞれの属性の値としてセットされ、対応するテーブルのカラムに保存される。
#ネストをした場合
groups と messages が1対多関係。
ネストした場合、引数のインスタンスは二つになる。
config/routes.rb
resources :groups do
resources :messages
end
message/new.html.haml
= form_for [@group, @message] do |f|
...
Discussion