我已经为在线考试建立了一个表格,它显示问题和答案,用户可以选择答案,然后他们可以提交表格。这是我的表格代码:
<%= 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| %>
但是使用此代码,每次刷新页面时答案都是随机的。我希望答案是随机的一次,所以我可以稍后查看考试,问题和答案的顺序正确,就像用户做的时候一样。任何人都可以给我一些想法或解决方案吗?非常感谢。
我有的一些模型:
- 问题有很多答案
- 答案属于问题
- 考试有很多exam_questions
- 考试有很多exam_answers
ExamQuestion模型用于存储考试问题的列表 id,它有一些列:exam_id, question_id, topic_id, correct (boolean), sured (boolean)
.
ExamAnswer模型用于存储用户的列表答案 id,它有一些列:exam_id, question_id, user_answer_id