オンラインで試験用のフォームを作成しました。ユーザーが回答を選択できる質問と回答が表示され、フォームを送信できます。これは私の形式のコードです:
<%= form_tag({ controller: 'exams', action: 'check_results' }, authenticity_token: true) do %>
<ol class="questions">
<% @questions.each do |question| %>
<li class="content_question"><%= kramdown question.content %></li>
<ol class="answers">
<% question.answers.shuffle.each do |answer| %>
<table class="answer_contents">
<tbody>
<tr>
<% if question.question_type.shorcut == 'MC' %>
<td><%= check_box_tag "user_answer_ids[#{question.id}][]", answer.id, false, id: "user_answer_ids_#{answer.id}" %></td>
<td><li></li></td>
<td><%= label_tag "user_answer_ids_#{answer.id}", kramdown(answer.content) %></td>
<% else %>
<td><%= radio_button_tag "user_answer_ids[#{question.id}][]", answer.id, false, id: "user_answer_ids_#{answer.id}" %></td>
<td><li></li></td>
<td><%= label_tag "user_answer_ids_#{answer.id}", kramdown(answer.content) %></td>
<% end %>
</tr>
</tbody>
</table>
<% end %> <%# question.answers %>
</ol> <%# ol.answers %>
<br>
<% end %> <%# @questions %>
</ol> <%# ol.questions %>
<%= submit_tag "Finish Exam", disable_with: "Checking results...", confirm: "Are you sure?", class: "btn btn-primary" %>
<% end %> <%# form_tag %>
回答の順序をランダムにしたいので、次を使用します。
<% question.answers.shuffle.each do |answer| %>
しかし、このコードでは、ページを更新するたびに回答がランダムになります。回答を 1 回だけランダムにしたいので、ユーザーが行ったときのように質問と回答が正しい順序で後で試験を確認できるようにします。誰でもそれを行うためのアイデアや解決策を教えてもらえますか? 本当にありがとう。
私が持っているいくつかのモデル:
- 質問には多くの答えがあります
- 回答は質問に属します
- 試験には多くの試験問題があります
- 試験には多くの試験回答があります
ExamQuestionモデルは、試験問題のリスト ID を格納するために使用されます。いくつかの列があります: exam_id, question_id, topic_id, correct (boolean), sured (boolean)
.
ExamAnswerモデルは、ユーザーのリスト回答 ID を格納するために使用され、いくつかの列があります。exam_id, question_id, user_answer_id