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つの書き換えが完了して正解。