Don't use last
as that will trigger the query execution. Use reverse_order
and limit
instead.
Book.joins(:ads).reverse_order.limit(20).page(params[:page]).per_page(10)
質問
I'm trying to do pagination using the will_paginate gem:
@books = Book.joins(:ads).last(20).page(params[:page]).per_page(10)
But I'm getting this error: undefined method `page' for #<\Array:0x007fc3ef37d308> and I can't seem to figure out what's wrong. Pagination works like a charm in other actions.
Thanks! :)
解決
Don't use last
as that will trigger the query execution. Use reverse_order
and limit
instead.
Book.joins(:ads).reverse_order.limit(20).page(params[:page]).per_page(10)
他のヒント
If you still want to paginate array:
require 'will_paginate/array'
and then use
Array#paginate
https://github.com/mislav/will_paginate/wiki/Backwards-incompatibility (the very bottom of the page)
sources:
https://github.com/mislav/will_paginate/blob/2-3-stable/lib/will_paginate/array.rb https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/array.rb