1

ビューに表示するレコードがいくつかあります。彼らは持っているstart_dateend_date。ビューにアクセスするとき、デフォルトでは、日付が期限切れになっていないレコードのみを表示するようにします。期限切れは次のように定義されます:

  • 終了日と開始日<=今、そして
  • 終了日が開始日より後

次に、期限切れのレコードを含むすべてのレコードを表示するチェックボックスが必要です。

どうすればこれにアプローチできますか?

4

1 に答える 1

0

コントローラアクションでは、これをどこかに配置する必要があります。

params[:search] ||= {} # make sure this is instantiated

# filter to show the expired records
if params[:include_expired] # check if the checkbox is checked
  params[:search][:end_date_lte] = Date.today # end_date <= Now
  params[:search][:start_date_lte] = Date.today # end_date <= Now
end

@records = params[:include_expired] ? RecordClass.where("end_date > start_date").search(params[:search]) : RecordClass.search(params[:search])

また、すべての検索をバイパスして、次のようなスコープを使用することもできます。

@records = params[:include_expired] ? RecordClass.expired : RecordClass.all # or whatever logic you need

# scope in the RecordClass
scope :expired, where("end_date > start_date AND end_date <= ?", Date.today)
于 2012-01-17T15:21:40.973 に答える