我正在验证我正在构建的游戏应用的答案。我遇到了正确的数据库调用问题。
问题#validate_answer
def validate_answer
@answer = Answer.where(correct: true)
@correct_answer = @answer
@selected_answer = params[:answer]
#check if the submitted answer is the correct answer
if @selected_answer == @correct_answer
render :success
else
render :error
end
end
Question.rb
class Question < ActiveRecord::Base
belongs_to :category
has_many :answers
has_one :video_clue
has_many :answers
def correct_answer
answers.find_by correct: true
end
end
Answer.haml
%form#form{:action => results_path(@question), :method => "post"}
- @answers.each do |answer|
.form-group
.radio
%input{:name => 'q_id', :type => 'hidden',:value =>'#{@question.id}'}
%input.btn.btn-default.btn-block{:name => 'answer', :style => 'vertical-align: middle; margin:0px;', :type => 'submit', :value => answer.text}
Seeds.rb
q = Question.create question: "In what year did MTV (Music Television) premiere and what was the first music video the channel aired?", category_id: 1
q.answers.create text: '1982 Michael Jackson Bille Jean'
q.answers.create text: '1984 Madonna Like a virgin'
q.answers.create text: '1981 The Buggles Video Killed The Radio Star', correct: true
目标是将所选答案与正确答案相匹配。它不断渲染“失败”。页。
答案 0 :(得分:0)
我相信你正在将一个字符串与ActiveRecord对象进行比较,当然这个对象会失败。
即。 '1982 Michael Jackson Bille Jean' != <Answer id:1 text:"1982 Michael Jackson Bille Jean">
您是否考虑过传递答案的ID而不是文字然后进行比较。这将允许您查询用户选择的答案。例如
问题#validate_answer
def validate_answer
@answer = Answer.where(correct: true)
@correct_answer = @answer
@selected_answer = Answer.find(params[:answer_id])
#check if the submitted answer is the correct answer
if @selected_answer == @correct_answer
render :success
else
render :error
end
end
或者您需要将params[:answer
]与文字属性进行比较
问题#validate_answer
def validate_answer
@answer = Answer.where(correct: true)
@correct_answer = @answer.text
@selected_answer = params[:answer]
#check if the submitted answer is the correct answer
if @selected_answer == @correct_answer
render :success
else
render :error
end
end