Как проверить форму вопросов викторины - PullRequest
0 голосов
/ 10 марта 2011

У меня есть довольно простая форма, которая показывает вопросы викторины вместе с вариантами выбора:

<%= form_tag(quiz_attempts_path, :method =>'post') %>
    <% @course_step.step.step_quiz.step_quiz_questions.each do |quiz_question| %>
        <h3><%= quiz_question.value %></h3>

        <% quiz_question.step_quiz_question_choices.each do |quiz_question_choice| %>
        <%= radio_button_tag("quiz_questions[#{quiz_question.id}]", quiz_question_choice.value, false)%>
        <%= quiz_question_choice.value%><br />
        <% end %>

    <% end %>
    <%= hidden_field_tag('step_quiz_id', @course_step.step.step_quiz.id)%>
    <%= hidden_field_tag('started', Time.now.utc)%>
    <%= submit_tag("Submit Quiz")%>
</form>

Когда я сохраняю результат для формы, я сохраняю только сводные данные: (Нужно ли проверять данные, поступающие в этот метод, с какой-то моделью?)

def create
    correct = 0
    incorrect = 0
    params[:quiz_questions].each do |step_quiz_question_id, chosen_answer|
      if StepQuizQuestion.find(step_quiz_question_id).correct?(chosen_answer)
        correct += 1
      else
        incorrect += 1
      end
    end

    QuizAttempt.create(:patient_id => current_user.id, :correct => correct, :incorrect => incorrect, :started => params[:started], :ended => Time.now, :step_quiz_id => params[:step_quiz_id])
  end

Ниже приведена модель попытки опроса, в которую я сохраняю.

class QuizAttempt < ActiveRecord::Base
  belongs_to :step_quiz
  belongs_to :patient

  attr_accessible :step_quiz_id, :patient_id, :started, :ended, :correct, :incorrect  
end


# == Schema Information
#
# Table name: quiz_attempts
#
#  id           :integer         not null, primary key
#  step_quiz_id :integer
#  patient_id   :integer
#  started      :datetime
#  ended        :datetime
#  correct      :integer
#  incorrect    :integer
#  created_at   :datetime
#  updated_at   :datetime
#

Как бы вы проверили форму без большого количества кода?

Правильный ли мой общий подход к этому?

1 Ответ

0 голосов
/ 11 марта 2011

Я думаю, что лучшим подходом может быть подход с вложенными полями.

Вы можете очень хорошо начать это здесь (часть 1) и здесь (часть 2) с точно вашим сценарием, опросом с вопросами и ответами.

Для проверки вам необходимо предоставить больше информации о том, какой тип проверки вам необходим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...