2016-11-17 2 views
0

Решил JSONify с Redis на моем сайте. Как мне получить will_paginate для работы с json?will_paginate массив JSON

# games.html.erb 
<%= js_will_paginate @games, renderer: BootstrapPagination::Rails, class: 'pagination-sm', previous_label: "&#8592;".html_safe, next_label: "&#8594;".html_safe, page_links: false %> 

Это ошибка, я получаю:

# undefined method `total_pages' for #<Array:0x007f90ebc05cf0> ln 23 of will_paginate_helper.rb 
ln23: will_paginate(collection, options.merge(:renderer => WillPaginateHelper::WillPaginateJSLinkRenderer)) 

И мой will_paginate_helper:

# will_paginate_helper.rb 
module WillPaginateHelper 
    class WillPaginateJSLinkRenderer < BootstrapPagination::Rails 
    def prepare(collection, options, template) 
     options[:params] ||= {} 
     options[:params]['_'] = nil 
     super(collection, options, template) 
    end 

    protected 
    def link(text, target, attributes = {}) 
     if target.is_a? Fixnum 
     attributes[:rel] = rel_value(target) 
     target = url(target) 
     end 

     @template.link_to(target, attributes.merge(remote: true)) do 
     text.to_s.html_safe 
     end 
    end 
    end 

    def js_will_paginate(collection, options = {}) 
    will_paginate(collection, options.merge(:renderer => WillPaginateHelper::WillPaginateJSLinkRenderer)) 
    end 
end 

, когда я играть с кли ниже, за исключением nomethoderror ...

>> collection 
=> [{"id"=>8199, "start_time"=>nil, "game_date"=>"2016-10-23", ... etc }] 
>> collection.first 
=> {"id"=>8199, "start_time"=>nil, ... etc 

Нужно ли конвертировать collection что-то will_paginate может работать или перезаписывать/переопределять js_will_paginate? Спасибо!

ответ

0

Выяснил это.

добавлено require 'will_paginate/array' к моему will_paginate_helper.rb, а затем разбивается на страницы по алфавиту ПОСЛЕ .to_json, т.е. в моем помощнике (или контроллера):

games = Game.order(game_date: :desc).postgame.to_json 
@games = Oj.load games 
@games = @games.paginate(page: params[:page], per_page: 10) 

Работает с will_paginate или js_will_paginate так же, как и раньше.

Смежные вопросы