未だによくわからないバグが発生したので、その対処法を此処に忘れないように記す。
理由が分かる方がいればコメントをお願いします。
まだ推測ですが原因もわかってきました。
ピザのレビューを書くために、そのピザのidとピザに対するレビュー内容(text)を取得する処理を記入
reviews_controller.rb
class ReviewsController < ApplicationController
def create
@review = Review.create(text: create_params[:text], pizza_id: create_params[:pizza_id])
redirect_to root_path
end
private
def create_params
params.require(:review).permit(:text, :pizza_id).merge(user_id: current_user.id)
end
end
このようにして、formに入力された内容を取得して表示させたかったのだが.....
current_user.nameしか表示されない......
view, controllerそのほかを見てもよくわからない....
paramsで取得しようとすると失敗したので、メソッド名のcreate_paramsで試す...
textは取得できた...しかしpizza_id(ピザ側の識別子)の方は取得できない。
そこでcreateメソッド内の記述を変更
reviews_controller.rb
class ReviewsController < ApplicationController
def create
@review = Review.create(text: create_params[:text], pizza_id: params[:pizza_id])
redirect_to root_path
end
private
def create_params
params.require(:review).permit(:text).merge(user_id: current_user.id)
end
end
textはprivateメソッドのcreate_pramsから取得。
pizza_idはparamsで取得しました。
####レビュー取得成功!!
どうやら識別子であるpizza_idはform_forを使用した時にはストロングパラメータには入らないようなので、paramsで取得しなければならないようです・・・