我正在尝试使用RoR编写多项选择测验。我是初学者,所以任何帮助都表示赞赏。到目前为止,我有一个Quizzes控制器,其中包含以下代码:
class QuizzesController < ApplicationController
def new
@quiz = Quiz.new
end
def create
@quiz = Quiz.new(quiz_params)
if @quiz.save
redirect_to "http://www.rubyonrails.org"
end
end
def quiz_params
params.require(:quiz).permit(:question, :wrong_answer_1,
:wrong_answer_2,
:wrong_answer_3,
:correct_answer)
end
def show
@quiz = Quiz.find(params[:id])
end
end
我的测验有五列(不包括ID) - question,wrong_answer_1,wrong_answer_2,wrong_answer_3和correct_answer。我很确定我的数据库/迁移是正确的。
我真的不确定从哪里开始。我希望用户能够使用单选按钮选择correct_answer和屏幕来说明正确,反之亦然,使用wrong_answer_1,wrong_answer_2等。
答案 0 :(得分:0)
我会修改应用程序以包含anwser作为模型。然后每个问题都可以has_many
回答,并且一个正确答案。你应该使用radio_button_tag
<% @question.answers.each do |answer| %>
<li>
<%= radio_button_tag("answer[#{question.id}]", answer.id) %>
<%= label("answer_".concat(answer.id.to_s).to_sym, answer.content) %>
</li>
<% end %>
# == Schema Information
#
# Table name: questions
# ...
# correct_answer_id :integer
# ...
has_many :answers, dependent: :destroy
# == Schema Information
#
# Table name: answers
# ...
# question_id :integer
# ...
belongs_to :question
def show
@quiz.includes(:answers).find_by(params[:id])
end
答案 1 :(得分:0)
你已经有了一个新的,所以你可以用正确的假答案创建问题。 现在你可以创建一个def索引,它将显示你所有的问题。
所以:
def index
@questions = Question.all
end
index.html.erb文件中的做一些事情: @ questions.each do | q | ... 并显示它们像q.wronganswer,q.wrongaswer2等。 你必须找出一种随机显示答案选项的方法,否则它们都具有相同的格式 题 错误的答案 错误答案2 错误答案3 正确答案