Rails应用程序中的未定义方法

时间:2016-09-15 18:14:11

标签: ruby-on-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

我觉得我过去两个小时一直在阅读帮助论坛。我被卡住了。任何帮助将非常感谢!

1 个答案:

答案 0 :(得分:1)

review行动create中有一个拼写错误。

更改以下行

@reivew = Review.new(review_params)

@review = Review.new(review_params)

出错的原因是@reviewnil,您无法在book_id对象上调用方法nil