如何使用has_many修复rails app中未定义的方法错误?

时间:2013-05-03 15:01:46

标签: ruby-on-rails

当我尝试访问我的rails应用程序中的以下网址时出现错误。

http://localhost:3000/origtexts/1/reviews/new

的routes.rb

resources :origtexts do
  resources :reviews
end

它正确地传递了评论(1)的参数但是我得到的错误是对于ReviewController#new中的行的未定义方法`review'。

reviews_controller.rb

class ReviewsController < ApplicationController
    before_filter :find_origtext
    before_filter :find_review, :only => [:show, :edit, :update, :destroy]

    def new
        @review = @origtext.review.build
    end

    def show
    end

    def create
        @review = @origtext.reviews.build(params[:review])
        if @review.save
            flash[:notice] = 'Review has been created'
            redirect_to [@origtext, @review]
        else
            flash[:alert] = 'Review has not been created'
            render :action => 'new'
        end
    end


    private
    def find_origtext
        @origtext = Origtext.find(params[:origtext_id])
    end

    def find_review
        @review = @origtext.reviews.find(params[:id])
    end

end

有关如何解决这个问题的建议吗?

1 个答案:

答案 0 :(得分:4)

在此行中将review更改为reviews

@review = @origtext.review.build

@review = @origtext.reviews.build