我正在尝试使用我的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>
我不知道为什么。我试过重启服务器。我错过了一些明显的东西吗?
提前致谢。
答案 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
之前不会收到错误的原因。