カミナリ使用中にエラーが発生しました。
Gemfile:
_# gem 'will_paginate', '~> 3.0.6'
# gem 'will_paginate-bootstrap'
gem 'kaminari'
_
lists_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 params[:page].per(2)
フォロー.order(created_at: :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">
_
カミナリについてのレールキャストのビデオをフォローしていましたが、エラーはありませんでした。
両方のクエリをページ分割する必要があります。私は次のようなものをお勧めします:
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
それ以外の場合、@lists
がnilの場合、params[:tag]
はページネーションオブジェクトになりません。
次のページ付けを試してください:
List.tagged_with(params[:tag]).order(created_at: :desc).page(params[:page]).per(3)
同様の問題が発生しました。これは、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) %>
およびイニシャライザー(initializers/kaminari_config.rb)
module Kaminari
module Helpers
module HelperMethods
extend ActionView::Helpers::TranslationHelper
module_function :page_entries_info
end
end
end
これは非常にハッキーな修正ですが、役立つことを願っています。