分页问题(will_paginate)

时间:2013-04-26 17:26:43

标签: ruby-on-rails ruby pagination

我正在尝试使用我的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

在我看来我有

 <ul>
  <% @links.each do |entry| %>
  <li><%= link_to entry.title, entry.url %></li>
  <% end %> 
<ul>
<%= will_paginate @links %>

我收到了错误

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>

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

提前致谢。

1 个答案:

答案 0 :(得分: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

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