Неопределенный метод `paginate'для Array on Rails 3 с mongoid

Попытка использовать гем will_paginate.

Мой Gem файл имеет:

gem 'will_paginate', '~> 3.0.0'

Мои orders_controllers.rb:

def index
    @orders = Order.all.paginate(:page => params[:page], :per_page => 20)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @orders }
    end
  end

На моем index.html.erb я положил:

<%= will_paginate @orders %>

Ошибка:

NoMethodError in OrdersController#index

undefined method `paginate' for #<Array:0x007f79a1be62f8>
Rails.root: /home/askar/Dropbox/rails_studio/somics

Application Trace | Framework Trace | Full Trace
app/controllers/orders_controller.rb:5:in `index'

У меня теперь есть камень каминари для нумерации страниц, но я хочу знать о will_paginate.

4 ответа

Решение

Функции массива по умолчанию отключены, их необходимо включить, указав их в файле WillPaginate:

require 'will_paginate/array'

В вашей конфигурации / инициализаторах добавьте файл will_paginate_array_fix.rb, а в файл will_paginate_array_fix.rb добавьте

require 'will_paginate/array'

Я просто хотел добавить, что после того, как вы сделаете, как предлагает предыдущий ответ:

В вашей конфигурации / инициализаторах добавьте файл will_paginate_array_fix.rb, а в файл will_paginate_array_fix.rb добавьте

require 'will_paginate/array'

Вам нужно перезагрузить сервер, чтобы это вступило в силу.

Я не думаю, что нам нужно добавлять какие-либо файлы в конфигурации / инициализаторы. После того, как вы выполните все шаги, указанные на официальной странице github, перезапустите сервер rails, и все будет работать нормально.

Другие вопросы по тегам