0

私は2つのモデル Person と Address を持っており、多くの結合テーブル関連付けに属しています。

will_paginateransackを使用します。

日付フィールドでフィルタリングすると、最初のページが正しくフィルタリングされます。他のページネーション リンクのいずれかをクリックすると、クエリが からdate(persons.dob) >= '2013-09-01')に変わりますdate(persons.dob) >= 2013)

class Person
  has_many :person_addresses
  has_many :addresses, through: :person_addresses
end

class Address
  has_many :person_addresses
  has_many :persons, through: :person_addresses
end

class PersonAddress
  belongs_to :person
  belongs_to :address
end

個人の検索フォームには、、、dob_gteqおよびフィルタがdob_lteqあります。name_contaddresses.street_cont

のみをフィルタリングするdob_gteqと、最初のページが正しく機能します。他のすべてのページネーションの原因:

ActionView::Template::Error (PG::UndefinedFunction: ERROR:  operator does not exist: date >= integer
 LINE 1: ...name" WHERE ((date(persons.dob) >= 2013 AN...

検索フォームからフィルターを削除すると、addresses.street_contフィルターが正しく機能し、期待どおりに改ページできるようになります。


要求されたコントローラーアクションとして編集

@q = Person.search(params[:q])
@persons = @q.result(:distinct => true).paginate(:page => params[:page], :per_page => 30)

編集2

検索に入るパラメータ:

Parameters: {"utf8"=>"✓", "q"=>{"name_cont"=>"", "addresses_street_cont"=>"", "addresses_zipcode_cont"=>"", "dob_gteq"=>"09-01-2013", "dob_lteq"=>""}, "commit"=>"Filter"}
4

1 に答える 1