1
2

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.

ネストした 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?