1

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未満の場合、それらは正常に表示されます。

他の場所で見つけた唯一の同様の報告された問題は、:pageand:per_pageパラメーターをsearch関数に渡すことで解決されましたが、私はすでにそれを行っていますが、役に立ちません。

4

2 に答える 2

5

タイヤにはページ付けモジュールがありますが、を定義していませんoffset。あなたはそれを追加するために彼らに問題を提出することができますが、それまでの間、あなたはあなたのアプリでそれをモンキーパッチすることができます:

Tire::Results::Pagination.module_eval do
  def offset
    (@options[:per_page] || @options[:size] || 10 ).to_i * (current_page - 1)
  end
end
于 2011-09-05T23:36:19.987 に答える
1

私のtestappでは、結果はとでうまくページ付けされwill_paginate 3.0ていtire 0.3ます。will_paginateがメソッドを必要としていることに気づいていませんでしたoffset

will_paginate追加しましたが、仕様から「lint」テストをコピーします: https ://github.com/karmi/tire/commit/e0e7730 。次のリリースの一部になるはずです。

于 2011-09-06T10:36:38.783 に答える