0

我是 RoR 的新手,所以我在这里遗漏了一些非常基本的东西,但我无法弄清楚。我通过调用控制器在 RoR 应用程序中使用 Kaminari gem 进行分页:

users_controller.rb:

def index
@users =  User.order('created_at DESC').page(params[:page])
end

在我看来,我有:

用户/index.html.erb:

<%= paginate @users %>
<%= render @users %>

最后,我的用户部分是:

用户/_user.html.erb

<% @users.each do |u| %>
(data output like <%= u.login %> and so on)
<%= end %>

所以它尽可能简单,并且类似于 Kaminari 使用示例。但是,我收到了具有指定行数的正确表,但该表被呈现 n 次,其中 n 是 paginates_per 选项的数量。分页 ifself 工作正常,但我无法调试该问题,我做错了什么?

我在 Kaminari 之前使用过 will_paginate gem,它开箱即用,效果很好,所以我的应用程序并没有在更深的地方完全损坏(如果它可以在这种简单的情况下)。

根据日志,所有内容都呈现一次,因此 @users 对象包含相乘的数据。

4

2 回答 2

0

这个问题的原因很简单,一个答案是做改变

用户/index.html.erb:

从:

<%= paginate @users %>
<%= render @users %>

至:

<%= paginate @users %>
<%= render 'user' %> 

但是如果你(或者更确切地说是我)想要呈现我应该在我的部分中拥有的集合

用户/_user.html.erb:

  <tr>
    <td><%= user.id %></td>
    <td><%= user.login %></td>
    <td><%= user.email %></td>
    #(and so on...)
    <% end %>
  </tr>

只有那个(将为数据库中的每条记录调用的表的一部分)

所以现在 index.html.erb 看起来像这样:

用户/index.html.erb

<table>
  <tr>
    <th>Id</th>
    <th>Name</th>
    #(and whatever you want)
  </tr>

  <%= render @users %>
</table>

现在表格将正确呈现。

于 2013-04-23T20:37:40.680 回答
0
<%= @users.each do |u| %>
(data output like <%= u.login %> and so on)
<%= end %>

<%=输出代码结果,而<%只是执行它。交换你的代码:

<% @users.each do |u| %>
(data output like <%= u.login %> and so on)
<% end %>
于 2013-04-19T11:41:37.770 回答