2016-06-17 1 views
0

그래서 난이 작은 퀴즈 웹 응용 프로그램과 방법을 만드는 중이라서 레일 호출, if 문 입력하지 나는 그것이 완료/라인는 컨트롤러 방법은

<li><%= button_to @current_question.answer1, request.base_url + '/answer/1' %></li> 

과의 동일 컨트롤러 메소드를 호출하면됩니다 다른 3 개 가지 옵션/

컨트롤러 메소드가 호출되는으로 작동하는 것 같다

:

: 여기
def isAnswer 
    @current_question = Question.find(session[:current_question]) 
    if params[:id] == @current_question.correct_id 
     session[:answers_right] += 1 
    end 
    session[:current_question] += 1 
    render 'session' 
end 

내 경로 라인
post 'answer/:id' => 'sessions#isAnswer' 

그러나 문제는 내가 클릭 한 옵션에 관계없이 if 문을 입력하지 않는다는 것입니다. 또한 세션 []에서 params [: id] 및 @ current_question.correct_id를 저장해 보았고 둘 다 (내 테스트 케이스에서) 있는지 확인하기 위해 인쇄했습니다.

+0

물음표'? '가있는 술어 메소드의 이름을 지정하고'snake_case'를 사용하는 것이 가장 좋습니다. https://github.com/bbatsov/ruby-style-guide#naming'isAnswer'는 더 유사해야합니다 'is_answer?' – Jonathan

+0

잘 메서드는 아무것도 반환하지 않지만 확실히 올바른 대답을 계산하는 내 문제를 해결하기 위해 노력하고 있지만, 당신이 의미하는 것을 이해하십시오 –

+0

당신의 params 해시에 뭐죠? 'puts params' – Josh

답변

0

문제는 세션 [: id]가 정수 '1'이 아닌 문자열 '1'이었기 때문에 정수 (session [: id])를 호출 한 다음 correct_id와 비교하여 해결했습니다.