Ruby shuffle!数组内的每个数组

时间:2014-02-09 20:26:16

标签: ruby-on-rails ruby arrays

我正在尝试进行测验,因此我有很多问题需要很多答案。我可以随机播放这些问题,因此每次都不会出现相同的顺序。

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

1 个答案:

答案 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 %>