Ruby on rails kaminari未定义方法`总页数';
在使用kaminari时,我犯了一个错误 档案:Ruby on rails kaminari未定义方法`总页数';,ruby-on-rails,ruby,kaminari,Ruby On Rails,Ruby,Kaminari,在使用kaminari时,我犯了一个错误 档案: # gem 'will_paginate', '~> 3.0.6' # gem 'will_paginate-bootstrap' gem 'kaminari' 列出\u controller.rb def index if params[:tag] @lists = List.tagged_with(params[:tag]).order(created_at: :desc).paginate(page:par
# gem 'will_paginate', '~> 3.0.6'
# gem 'will_paginate-bootstrap'
gem 'kaminari'
列出\u controller.rb
def index
if params[:tag]
@lists = List.tagged_with(params[:tag]).order(created_at: :desc).paginate(page:params[:page], per_page: 3 )
else
@lists = List.all.order(created_at: :desc)
end
end
我还使用了用户.page参数[:page].per(2)
遵循.order(在::desc创建)
但不起作用
视图/列表/index.html.erb
<%= paginate @lists %>
错误就在这里
undefined method `total_pages' for #<List::ActiveRecord_Relation:0x007fa2303e3fa8>
Extracted source (around line #26):
</div>
</div>
<%= paginate @lists %>
<div class="container">
<div class="row">
<div class="col-md-8">
未定义的方法“总页数”#
提取的源(第26行附近):
我正在观看railscasts关于kaminari的视频,但他们没有任何错误。尝试使用以下内容进行分页:
List.tagged_with(params[:tag]).order(created_at: :desc).page(params[:page]).per(3)
您需要对这两个查询进行分页。我建议如下:
def index
if params[:tag]
@lists = List.tagged_with(params[:tag])
else
@lists = List.all
end
@lists = @lists.order(created_at: :desc).paginate(page:params[:page], per_page: 3 )
end
否则,当
参数[:tag]
为nil时,@lists
将不会成为分页对象。我遇到了类似的问题,这是因为commontator gem从will_paginate引入了方法并重写了基本ActiveRecord类
错误出现在page_entries_info方法的调用堆栈中,这似乎是两个库之间的通用方法名
要修复此问题,可以使用以下方法显式引用此方法:
因此,视图代码:
<%= Kaminari::Helpers::HelperMethods.page_entries_info @events %>
<%= link_to "Next", path_to_next_page(@events) %>
<%= link_to "Prev", path_to_prev_page(@events) %>
这是一个非常棘手的解决方案,但希望能有所帮助。试试:
order(:nome).page page
为我工作非常感谢!很有效,非常感谢。添加@list。user.page(params[:page]).per(5)``@lists=@lists.order(created_at::desc).page(params[:page]).per(5)``页面确定。@user5590209如果我已经解决了你的问题,请点击旁边的复选标记接受我的答案。谢谢提醒,我是新来的。现在可以了吗?选择你的答案是最好的和小鸡nike标志。适合我。谢谢
order(:nome).page page