2016-09-15 9 views
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時間のヘルプフォーラムを読む。私は立ち往生している。どんな助けでも大歓迎です!

答えて

1

createにはreviewの入力ミスがあります。

変更

@review = Review.new(review_params) 

エラーの理由に次の行

@reivew = Review.new(review_params) 

@reviewnilであり、あなたがnilオブジェクトのメソッドbook_idを呼び出すことはできませんということです。

+0

ありがとうございました! @ review.user_id = @ current_user.id それは言う: 未定義のメソッド 'id 'for nil:NilClass –

+1

これは、' @ current_user'がnilであるためです。 '@ current_user'変数はどこで設定しますか?あなたがdeviseを使っているなら、 'current_user'でなければなりません。 Btw、私の答えがあなたを助けたら、upvoteして、私の答えを受け入れてください(期限の後)。 –

+0

ありがとうございました!それはうまくいった! –

関連する問題