我是RoR的新手,所以我在这里遗漏了一些非常基本的东西,但我无法理解。我通过调用控制器来使用Kaminari gem在RoR应用程序中进行分页:
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选项的数量。分页如果自己工作正常,但我无法调试那个问题,我做错了什么?
我在Kaminari之前使用了will_paginate gem并且开箱即用,所以我的应用程序并没有完全被破坏(如果它可能是这么简单的话)。
根据日志,所有内容都会呈现一次,因此@users对象包含相乘的数据。
答案 0 :(得分: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 %>
答案 1 :(得分: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>
现在表格将正确呈现。