1

我是Rails的新手,並且一直未能成功解決此問題。我有一個表格供用戶通過單選按鈕提交多項選擇問題的答案,並且我希望他們選擇的答案在他們重新訪問該問題或在頁面重新加載時再次顯示。他們的答案通過TestQuestions模型存儲在數據庫的answer_id列中。下面的代碼使得最後一個單選按鈕被選中,而不是他們給定的答案,關於如何使數據庫中的默認值成爲答案的任何建議?Rails單選按鈕:根據模型/數據庫條目設置默認值

按我下面的評論,我覺得這可能需要的jQuery/JavaScript的輸入值在HTML即比較 -

<input id="answer_id_5" type="radio" value ="5" name="answer_id"></input> 

到數據庫條目。

show.html.erb

<%= form_tag({controller: "test_questions", action: "update"}, method: "patch") do %> 

    <% @test_question.question.answers.each do |answer| %> 
    <li> 
    <%= radio_button_tag "answer_id", answer.id, checked: @test_question.answer_id %> # THE PROBLEM LINE 
     <%= answer.content %> 
    </li> 
    <% end %> 
    <%= submit_tag "Next" %> 
<% end %> 

test_questions_controller.rb

def show 
    @test_question = @test_questions.find(params[:id]) 
end 

回答

0

你應該做的是這樣的:

<%= radio_button_tag "answer_id", answer.id, checked: @test_question.answer_id == answer.id %> 

此:

@test_question.answer_id == answer.id 

將返回truefalse,從而檢查或取消選中單選按鈕。

@test_question.answer_id返回一個大於0的整數,這是一個真值,這意味着您檢查全部單選按鈕。由於只能檢查一個單選按鈕,它將是最後一個。

+0

優秀的,這是幫助我前進,謝謝米莎。現在的問題是代碼將一個數據庫值與另一個數據庫值進行比較。 @ test_question.answer_id == answer.id總是如果用戶正確回答問題,所以「checked」始終爲真。如果他們回答不正確,「檢查」始終是錯誤的。我將需要以某種方式訪問​​輸入單選按鈕值。例如,從獲取該值並將其與數據庫進行比較。我不確定,但我認爲這可能需要jQuery/JavaScript。 – user3291025

+0

你如何儲存正確答案?你還有什麼其他領域的數據庫。請將此信息添加到您的問題中,否則無法回答。 – Mischa

+0

好吧,所以我在radio_button_tag上面放置了布爾表達式<%= answer.id == @ test_question.answer_id%>來檢查值,並且在這種情況下返回正確的序列(false,true,false),所以代碼應該可以工作,但是按鈕仍然沒有被標記。真奇怪。 – user3291025

相關問題