paramsについて Railsエラー問題の解決するための考え方 その11 ~番外編~
・レビューを投稿してもrateカラム とreviewカラムに情報が保存されない。
→情報が保存されないということは、コントローラーが怪しいということで、app/controllers/reviews_controller.rbを見に行く。
→params.permit(:rate, :review).merge(product_id: params[:product_id], user_id: current_user.idの部分、
requiresの記載が無い
→params.require(:review).permit(:rate, :review).merge(product_id: params[:product_id], user_id: current_user.id)に書き換えることで正解。
・レビューが投稿したが、レビューが反映されないので反映されるようにして下さい。
→投稿の反映もしくは機能がおかしいかもしれないので、1つずつ見ていくことに
→まず、app/views/reviews/new.html.erbをみる。
→43行目<%= f.text_area :rate, placeholder: 'レビューを書いてね!', style: 'width: 100%;height: 300px;' %>と記載あるが、
reviewsに関する記載が何も無い。
→その為、<%= f.text_area :review, placeholder: 'レビューを書いてね!', style: 'width: 100%;height: 300px;' %>と記載する。
→次は、機能がおかしくないか、app/controllers/reviews_controller.rbをみる。
→16行目に、params.require(:review).permit(:rate).merge(product_id: params[:product_id], user_id: current_user.id)と記載があるが
;rateともう1つ利用可能なはずのレビューが記載されていない。
→その為、params.require(:review).permit(:rate, :review).merge(product_id: params[:product_id], user_id: current_user.id)
と変更する。
2つの書き換えが完了して正解。