我有一個Rails應用程序,用戶創建一個問題(問題模型接受Answer模型的嵌套屬性)和至少三個答案選擇。答案模型中的屬性是:內容(對於問題)和:correctanswer,用戶檢查答案選項是否正確的布爾值複選框。由於它是一個複選框,表單允許用戶選擇多個不幸的答案。我這樣做是因爲我無法弄清楚如何讓每個答案選項都有一個單選按鈕。模型屬性是未定義方法的活動記錄關係
爲了強制用戶只標記一個答案選項是正確的,我試圖在Question.rb模型中創建一個自定義驗證,但這是您會看到我可怕的ruby技能的地方。在下面的代碼中,self是問題,答案是嵌套模型,而correctanswer是嵌套模型中的一個屬性。我收到一條錯誤消息
undefined method `correctanswer' for []:ActiveRecord::Relation
你能告訴我如何實現我想要做的事嗎?我不確定在'if'語句結尾處使用.size != 1
(即會計算糾正錯誤的數量並拒絕它,如果它不是一個?),但是,由於首先彈出糾正錯誤錯誤,我沒有能夠看到它是否有效。
validate :only_one_checked_box
def only_one_checked_box
if self.answers.correctanswer.reject(&:marked_for_destruction?).size != 1
self.errors[:base] << "Must mark one and only answer as correct"
end
end
爲什麼不使用單選按鈕而不是複選框?你可以將它們分組,並且它們只允許用戶選擇一個選項。更多信息:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_radio「名稱」屬性將單選按鈕組合在一起,只有其中一個可以選擇 – dmoss18 2013-03-01 22:28:42