我正在开发一个为场地设置分页的 Rails 项目(通过思考狮身人面像),我正在尝试为用户设置它。我试图尽可能地模仿场地的功能。我遇到的问题是我只取回 :per_page 指定的结果数量,而不是查询的总结果。如果我将 :per_page 增加到超过总结果,我会显示所有结果以及用于分页的数字链接,但它们不起作用。
在我的控制器中,我正在做
@gender = params[:user][:gender] unless params[:user].blank?
@ethnicity = params[:user][:ethnicity] unless params[:user].blank?
@age = params[:user][:age] unless params[:user].blank?
@page = params[:page].blank? ? 1 : params[:page]
@users = User.matches_for_admin({
:gender => @gender,
:ethnicity => @ethnicity,
:age => @age,
:relationship => @relationship,
:per_page => 20,
}, @page)
@pages = @users[:count] / 20 + ((@users[:count] % 20) > 0 ? 1 : 0)
如果我将 :per_page 设置为 200,我会得到所有结果,并且页面会出现链接(用于分页),但链接不起作用,因为 per_page 高于总结果。
这是我用于分页的辅助函数
def pagination_user(current_page, pages)
return if pages == 0
render :partial => 'pagination_user', :locals => { :current_page => current_page.to_i, :pages => pages }
end
这是设置数字链接的部分
<div class="fullWidthPanel lightFilter pagination">
<ul>
<li> Pages: </li>
<% (1..pages).each do |page| %>
<li>
<% if page == current_page %>
<%= page %>
<% else %>
<a href="<%= url_for_user_page page %>">
<%= page %>
</a>
<% end %>
</li>
<% end %>
</ul>
<span class="results">
<strong>
Showing results <%= 1 + (current_page-1)*20 %>
to <%= [current_page*20, @users[:count]].min %>
of <%= @users[:count] %>
</strong>
</span>
</div>
其中 url_for_user_page 只是设置 url 以使分页工作的搜索选项。
我是新的思考狮身人面像,我很困惑为什么当我让它们设置相同时它适用于场地而不是用户。我得到的结果数量似乎是基于 :per_page 属性,而不是我从查询中实际返回的结果数量。任何对我可能遇到的潜在问题或我正在寻找的东西的任何见解都将不胜感激。
谢谢,
艾伦