我是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
我觉得我过去两个小时一直在阅读帮助论坛。我被卡住了。任何帮助将非常感谢!
答案 0 :(得分:1)
review
行动create
中有一个拼写错误。
更改以下行
@reivew = Review.new(review_params)
到
@review = Review.new(review_params)
出错的原因是@review
为nil
,您无法在book_id
对象上调用方法nil
。