Поиск шин и will_paginate - неопределенный метод `offset ' - PullRequest
1 голос
/ 05 сентября 2011

После головных болей с ThinkingSphinx и Solr / Sunspot мы опробуем ElasticSearch и Tire в качестве нашего поискового бэкенда, но я столкнулся с проблемой.

Вот моя команда поиска в контроллере:

@results = Item.search params[:search], :page => ( params[:page] || 1 ), :per_page => 20

И это проблемный раздел представления:

<%= page_entries_info @results %>

Я получаю сообщение об ошибке

undefined method `offset' for #<Tire::Results::Collection:0xa3f01b0>

, но только если результаты более чем на одну страницу. Если возвращено менее 20 предметов, они будут показаны в порядке.

Единственная похожая проблема, о которой я узнал в другом месте, была решена путем передачи параметров :page и :per_page в функцию search, но я уже делаю это, но безрезультатно.

Ответы [ 2 ]

5 голосов
/ 06 сентября 2011

Шина имеет модуль разбиения на страницы , но не определяет offset.Вы можете подать проблему с ними, чтобы добавить ее, но тем временем вы можете установить ее в своем приложении:

Tire::Results::Pagination.module_eval do
  def offset
    (@options[:per_page] || @options[:size] || 10 ).to_i * (current_page - 1)
  end
end
1 голос
/ 06 сентября 2011

в моем testapp, результаты разбиты на страницы просто отлично, с will_paginate 3.0 и tire 0.3. Я не знал, что will_paginate нужен метод offset.

Я добавил его, однако, копируя тест "lint" из will_paginate specs: https://github.com/karmi/tire/commit/e0e7730. Должен быть частью следующего выпуска.

...