1
私はRailsについてかなり新しく、書籍レビューアプリを構築するオンラインチュートリアルに従っています。私はレビューを提出するときを除いて、すべてが機能するようです。私が行うとき、私はこのエラーを取得する:ここでRailsアプリで定義されていないメソッド
undefined method `book_id=' for nil:NilClass
は私のレビューコントローラである:ここで
class ReviewsController < ApplicationController
before_action :find_book
def new
@review = Review.new
end
def create
@reivew = Review.new(review_params)
@review.book_id = @book.id
@review.user_id = @current_user.id
if @review.save
redirect_to book_path(@book)
else
render "new"
end
end
private
def review_params
params.require(:review).permit(:rating, :comment)
end
def find_book
@book = Book.find(params[:book_id])
end
end
は私のレビューのモデルである:ここで
class Review < ApplicationRecord
belongs_to :book
belongs_to :user
end
は、私の本モデルである:
class Book < ApplicationRecord
belongs_to :user
belongs_to :category
has_many :reviews
has_attached_file :book_img, styles: { book_index: "250x350>", book_show: "325x475>" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :book_img, content_type: /\Aimage\/.*\z/
end
私はハチミツのように感じる過去2時間のヘルプフォーラムを読む。私は立ち往生している。どんな助けでも大歓迎です!
ありがとうございました! @ review.user_id = @ current_user.id それは言う: 未定義のメソッド 'id 'for nil:NilClass –
これは、' @ current_user'がnilであるためです。 '@ current_user'変数はどこで設定しますか?あなたがdeviseを使っているなら、 'current_user'でなければなりません。 Btw、私の答えがあなたを助けたら、upvoteして、私の答えを受け入れてください(期限の後)。 –
ありがとうございました!それはうまくいった! –