2013-10-03 5 views
0

내 before_filter에서 변수를 설정하려고하지만, 항상 "AnswersController에 대한 정의되지 않은 지역 변수 또는 메소드 '질문'"오류를 얻을 수있어 설정, 메소드를 호출하지 :가 Before_filter는 지역 변수

class AnswersController < ApplicationController 
     before_filter :get_question 

     def create 
      @answer = question.answers.new(params[:answer]) 
      @answer.user = current_user 
      @answer.save 
      flash[:notice] = 'Answer posted successfully.' 
      redirect_to request.referer 
     end 

      def get_question 
       question = Question.find(params[:question_id]) 
      end 
    end 

감사합니다 흠뻑!

+0

'생성'작업으로 지정하면 코드가 제대로 작동합니다 ... – erdostom

답변

6

@ 기호를 사용하여 인스턴스 변수로 변경해야합니다. 또한이 방법은 공개 조치가 아니기 때문에 이것을 개인 방법 (아래 참조)으로 이동하는 것이 좋습니다.

class AnswersController < ApplicationController 
    before_filter :get_question 

    def create 
     @answer = @question.answers.new(params[:answer]) 
     @answer.user = current_user 
     @answer.save 
     flash[:notice] = 'Answer posted successfully.' 
     redirect_to request.referer 
    end 

    private 

    def get_question 
     @question = Question.find(params[:question_id]) 
    end 
end 
+0

고맙습니다. 해결되었습니다. – erdostom

+1

"before_filter : get_question, only : : create' 액션을 생성하기 전에 필터를 지정하기를 원할 수도 있습니다. – peresleguine

+1

@peresleguine, 나는 그들이 부분 컨트롤러 만 게시했을 가능성이 크고 다른 CRUD 작업이 있다고 생각했기 때문에 제안을 포함하지 않았습니다. – kobaltz