分页问题(will_paginate)

Jac*_*uul 1 ruby pagination ruby-on-rails

我正试图在我的rails应用程序中使用will_paginate进行分页.

在我的控制器中我有

def index
    params[:per_page] ||= 25
    params[:page] ||= 1
    @links = Link.order('created_at DESC').page(params[:page]).per_page(params[:per_page])
end
Run Code Online (Sandbox Code Playgroud)

在我看来,我有

 <ul>
  <% @links.each do |entry| %>
  <li><%= link_to entry.title, entry.url %></li>
  <% end %> 
<ul>
<%= will_paginate @links %>
Run Code Online (Sandbox Code Playgroud)

我收到了错误

comparison of Fixnum with String failed

Extracted source (around line #8):

5: </h2>
6: 
7: <ul>
8:   <% @links.each do |entry| %>
9:   <li><%= link_to entry.title, entry.url %></li>
10:   <% end %> 
11: <ul>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.我试过重启服务器.我错过了一些明显的东西吗

提前致谢.

mu *_*ort 6

我猜你有一个简单的"一切params都是字符串"问题,这可以解释为什么有人试图将Fixnum与String进行比较.页面和每页值应该是Fixnums但是,如果它们来自params,它们将是字符串.最简单的方法是to_i按照指示添加几个电话:

def index
    params[:per_page] ||= 25
    params[:page] ||= 1
    @links = Link.order('created_at DESC').page(params[:page].to_i).per_page(params[:per_page].to_i)
    #---------------------------------------------------------^^^^
    #------------------------------------------------------------------------------------------^^^^
end
Run Code Online (Sandbox Code Playgroud)

在您尝试从中获取内容之前,不会评估paginate生成的查询,这就是为什么@links.each在模板中没有得到错误的原因.