限制视图中的数组元素

时间:2013-05-31 09:39:59

标签: ruby-on-rails ruby

我正在使用rails 3.2.13

我有这个哈希数组:

[{"name" => 1, "foo" => "bar"},{"second" => 2, "foo" => "bar"}]

我将它们放在一个名为@names的变量中,并在视图中显示它们:

<% @names.each do |name| %>
   <%= name["name"] %>
   <%= name["foo"] %>
<% end %>

最大的问题是我如何以这样的方式对它们进行“分页”,即按下NEXT按钮显示第一个条目,然后当我按下一个按下第二个条目时依此类推。

我考虑过will_paginate,但它没有意义,因为我仍然需要在视图中处理我必须在页面中显示的内容。有任何想法吗?非常感谢!

3 个答案:

答案 0 :(得分:3)

will_paginate会为您处理这一切。通常它使用ActiveRecord关系,但它也可以对数组进行分页,看看stackoverflow question

答案 1 :(得分:3)

你可以使用kaminari,它可以很容易地paginate an array object

请注意,对数组进行分页将更改数组的内容,以便您的视图代码不会更改。您只需添加一个分页助手,以允许在数组页面中移动:

<%= paginate @names %>

答案 2 :(得分:1)

使用jQuery。我希望这会给出如何处理jQuery的想法。

<% @names.each do |name| %>
<div id="<%= name["name"] %>" style="display: none;"> 
   <%= name["name"] %>
   <%= name["foo"] %>
   <%= link_to_function "Next" , "$(this).parent('div').hide();$(this).next().show();" %>
</div>
<% end %>

<script type="text/javascript">
 $(document).ready(function(){ 
  $("#<%= @names.first["name"] %>").show();
});
</script>