[英]find events within date range of search results in rails/ruby
我為此付出了一些努力,我的網站上使用searchkick可以使用搜索功能。
但是我想允許我的用戶在結果頁面上過濾結果。
這是我的控制器供參考:
def search
@events = Event.page(params[:page]).per(10).search(params[:search], misspellings: { distance: 1 }, order: { date: :asc, eventname: :asc }, match: :word_start, page: params[:page], per_page: 20)
if @events.results.any?
render 'events/results'
else
@popevents = Event.limit(3).order('RANDOM()')
render 'events/noresults'
end
end
現在,我想要的是視圖中的一個簡單的日期選擇器,它允許用戶搜索返回事件的日期范圍(往返),然后在提交時僅返回該范圍內的事件。 我看過filterrific,但感到困惑,不確定那是我真正需要的嗎?
任何幫助將非常感激!
編輯
所以,如果我有這個:
<label for="datefrom">Date From:</label>
<input type="date" id="datefrom" class="form-control" name="datefrom" value="dd/mm/yyyy">
<label for="dateto">Date To:</label>
<input type="date" id="dateto" class="form-control" name="dateto" value="dd/mm/yyyy">
<div style="float:right">
<button class="btn btn-info" name="button">Apply Filters</button>
</div>
我想知道我需要在按鈕上放些什么,並且控制器中的位也可以放入if @events.results.any?
部分?
謝謝
您可以執行以下操作:
在視圖中,將date_pickers輸入如下:
<%= form_tag your_search_path, method: :post do%>
# here your datepicker content
<%= submit_tag 'Send' %>
<% end %>
在您的控制器中:
def search
@events = Event.page(params[:page]).per(10).search(params[:search], misspellings: { distance: 1 }, order: { date: :asc, eventname: :asc }, match: :word_start, page: params[:page], per_page: 20)
@events = @events.where(created_at: (Time.parse(params[:datefrom])..Time.parse(params[:dateto]))
if @events.results.any?
render 'events/results'
else
@popevents = Event.limit(3).order('RANDOM()')
render 'events/noresults'
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.