我正在尝试进行测验,因此我有很多问题需要很多答案。我可以随机播放这些问题,因此每次都不会出现相同的顺序。
q = Question.all().shuffle!
然后,我试着改变每个问题的所有答案:
q.each{ |i| i.answers.shuffle! }
但是当我在视图上迭代q
时,我总是每次都以相同的顺序得到每个问题的答案。我有什么不对的暗示?
修改
如果我@question = Question.find(1,2,3).shuffle!
我得到:
[ #<Question id: 1, contenido: "lorem ipsum 1", created_at: "2014-02-09 13:13:56", updated_at: "2014-02-09 13:13:56">
#<Question id: 3, contenido: "lorem ipsum 3", created_at: "2014-02-09 13:13:56", updated_at: "2014-02-09 13:13:56">,
#<Question id: 2, contenido: "lorem ipsum2", created_at: "2014-02-09 13:13:56", updated_at: "2014-02-09 13:13:56"> ]
如果我@question.first().answers
,我会得到一个这样的数组:
#<ActiveRecord::Associations::CollectionProxy [
#<Answer id: 1, contenido: "Black", correcta: true, created_at: "2014-02-09 13:13:56", updated_at: "2014-0213:13:56", question_id: 1>,
#<Answer id: 2, contenido: "Blue", correcta: false, created_at: "2014-02-09 13:13:56", updated_at: "2014-02-09 13:13:56", question_id: 1>,
#<Answer id: 3, contenido: "Yellow", correcta: false, created_at: "2014-02-09 13:13:56", updated_at: "2014-02-09 13:13:56", question_id: 1>]>
我的控制器方法如下所示:
def quiz
@questions = Question.find(1,2).shuffle!
@questions.each{ |i| i.answers.shuffle! }
end
在视图中我这样做:
<% @questions.each_with_index do |pregunta, index| %>
<div class="question-item <% if index == 0 %>current<% end %>">
<p><%= index + 1 %>- <%= pregunta.contenido %></p>
<%= hidden_field_tag "form[][pregunta]", pregunta.id %>
<%= hidden_field_tag "form[][respuesta]", "" %>
<ul>
<% pregunta.answers.each do |respuesta| %>
<li><span class="radio" data-id="<%= respuesta.id %>"></span><span><%= respuesta.contenido %></span></li>
<% end %>
</ul>
</div>
<% end %>
答案 0 :(得分:0)
我可能会在访问它们时这样做,所以在视图中......
<% @questions.shuffle!.each_with_index do |pregunta, index| %>
<div class="question-item <% if index == 0 %>current<% end %>">
<p><%= index + 1 %>- <%= pregunta.contenido %></p>
<%= hidden_field_tag "form[][pregunta]", pregunta.id %>
<%= hidden_field_tag "form[][respuesta]", "" %>
<ul>
<% pregunta.answers.shuffle!.each do |respuesta| %>
<li><span class="radio" data-id="<%= respuesta.id %>"></span><span><%= respuesta.contenido %></span></li>
<% end %>
</ul>
</div>
<% end %>