#前提・実現したいこと
日付の範囲検索において、検索フォームで入力された範囲内にイベントが開催されていれば、表示されるようにしたい。
#発生している問題・エラーメッセージ
検索フォームの期間 9/21〜9/28
イベント1の開催期間 9/24〜9/26
→検索後の画面にイベント1は表示される
検索フォームの期間 9/21〜9/28
イベント2の開催期間 9/18〜9/30
→検索後の画面にイベント2は表示されない
イベント2も表示されるようにしたい。
#該当のソースコード
gemのransackを使用して検索フォームを作っています。
また、イベント開催日のカラム名はstart_on、イベント終了日のカラム名はend_onです。
ビューファイルは以下の通りです。
ruby
1 <div class="conditions search-form"> 2 <%= search_form_for @search do |f| %> 3 4 <%= f.label :end_on, '期間', class: "search-form__element search-form__label" %> 5 <%= f.date_field :end_on_gteq, include_blank: true, class: "search-form__element search-form__data-field" %> 〜 6 <%= f.date_field :end_on_lteq, include_blank: true, class: "search-form__element search-form__data-field" %> 7 8 <%= f.label :category_id, 'カテゴリ', class: "search-form__element search-form__label" %> 9 <%= f.check_box :category_id_eq_any, { multiple: true }, 1, '' %>グルメ 10 <%= f.check_box :category_id_eq_any, { multiple: true }, 2, '' %>お祭り 11 <%= f.check_box :category_id_eq_any, { multiple: true }, 3, '' %>花火 12 <%= f.check_box :category_id_eq_any, { multiple: true }, 4, '' %>よさこい 13 <%= f.check_box :category_id_eq_any, { multiple: true }, 5, '' %>その他 14 15 <%= f.submit '検索', class: "search-form__element search-form__submit" %> 16 <% end %> 17 </div>
event_controller.rbの該当部分は以下の通りです。
ruby
1def index 2 @search = Event.ransack(params[:q]) #ransackメソッド推奨 3 @events = @search.result.includes(:category).order(:start_on) 4 @allevents = Event.where('start_on >= ?', Date.today).order(:start_on) 5end
#試したこと
f.date_field :start_on_gteqにしましたが、実現できませんでした。
gemのransackを使った期間内の日付を取得する範囲検索はできないのでしょうか、、?
#補足情報(FW/ツールのバージョンなど)
Rails 5.2.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/02 23:49