LoginSignup
1
2

More than 3 years have passed since last update.

ネストした form_withの理解を深める

Posted at

動機

ネストしていない場合はリダイレクト先を自動推論してくれていたので、ネストしている場合の知識のまとめとして記述

ルーティングでネストを定義している時の記述例

前提

userモデル・boardモデル・taskモデルがあり
boardはuserに紐付いている
taskはuserとboardに紐づいている

書き方

controllerファイル

def new
  @board = Board.find(params[:board_id])
  @task = @board.tasks.build
end

def edit
  @board = Board.find(params[:board_id])
  @task = @board.tasks.find(params[:id])
end

ポイント
タスクはどれかのボードに紐づいており、
どのボードに書き込まれているタスクなのかが情報として必要

なので、まずどのボードにあるかを取得し、そのタスクを探す

viewファイル

<%= form_with model: [@board, @task] do |form| %>
  <%= form.text_field :text %>
  <%= form.submit %>
<% end %>

modelの引数は配列として渡す
[(親)@インスタンス変数, (子)@インスタンス変数]の順で記述するようにする

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