解決にこれほど時間を費やしたことはなかった。
だか自分がいかに勉強不足かわかった。
twitter風のアプリでコメント機能を実装中だった。
(1)最初のエラーメッセージはこのメッセージでした
(2)投稿したメッセージに対してのコメントなので
必ず投稿内容があり、そのコメントであった。
ここからアソシエーションは必須。
ルーティングについてもネストを行っていました。
routes.rb
resources :prototypes do
resources :comments, only: :create
end
comment.rb
class Comment < ApplicationRecord
belongs_to :prototype
belongs_to :user
コメント受けるviewファイルについても
terataliさんでネストとビューファイルで検索をすると
>タイトル
『ネストさせたコントローラのビューのパスが通らないです』
のページにて
「フォームに渡すモデルオブジェクトは
<%= form_for([@product, @characteristic]) do |f| %>
のように配列で渡すことでできます」
とありました。
そこで
show.html.erb
<%= form_with model: [@prototype, @comment], local: true do |f| %>
と修正しました。
これで
ルーティング:ネスト
ビューファイル:配列でコントローラにひきわたす準備
できたと思いましたが、またまた同じエラーのまま(ここまでで11時間(汗))
最終的にはできました。
解決のまとめ
まずroutesの実装で
1。config-rbにて →→→→→→→→prototype(tweetページ)とcommentのネスト
2。view show.html.erbにて→[@prototype, @comment]でコメントの受け取り
#抜けているものは?
#MVCの[C]です。
prototypes_controller.rb
def show
@prototype = Prototype.find(params[:id])
end
show.html.rbには
’@prototype’と’@comment’を用意して
そこから受け取る側のprototypes_contoroller
には@prototypeしか用意してなかった。
@commentの受けわす先がなかったために「route error」
なのです
##1。受けて 「viewファイル」
##2。ルーティング 「config-route.rb」
##3。ここにも同じく仲介者 「viewに対応するcontroller」
##それぞれ対応するprototype comment を2つ用意
初心者ありがちです