试着在Ruby中编写多项选择测验

时间:2015-04-13 23:50:17

标签: ruby-on-rails ruby

我正在尝试使用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等。

2 个答案:

答案 0 :(得分:0)

我会修改应用程序以包含anwser作为模型。然后每个问题都可以has_many回答,并且一个正确答案。你应该使用radio_button_tag

_show_question.html.erb

<% @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 %>

应用程序/模型/ question.rb

# == Schema Information
#
# Table name: questions
# ...
#  correct_answer_id :integer
# ...
has_many :answers, dependent: :destroy

应用程序/模型/ answer.rb

# == Schema Information
#
# Table name: answers
# ...
#  question_id :integer
# ...
belongs_to :question

应用程序/控制器/ quizzes_controller.rb

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 正确答案