2016-06-17 79 views
0

,所以我做這個小測驗web應用程序和方式,我做的是通過調用一個控制器方法與行不進入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並打印它們以查看它們是否都是2(在我的測試用例中),它們是。

+0

這是在ruby中使用尾部問號'?'來命名謂詞方法並使用'snake_case'的最佳實踐https://github.com/bbatsov/ruby-style-guide#naming'isAnswer'應該更像'is_answer?' – Jonathan

+0

以及該方法不會返回任何東西,但確定我明白你的意思,現在雖然我試圖解決我的問題與計數正確的答案 –

+0

什麼在你的params散列? 'puts params' – Josh

回答

0

問題是session [:id]是字符串'1',而不是整數1.所以我通過調用Integer(session [:id])來修復它,然後將它與correct_id進行比較。