2016-09-10 62 views
0

爲了讓這個工作起作用,我在使用searchkick在我的網站上有一個工作搜索功能。在rails/ruby​​的搜索結果的日期範圍內找到事件

但是我想讓我的用戶在結果頁面上過濾結果。

這是我參考控制器:

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 

現在正是我希望在視圖中一個簡單的日期選擇器,允許用戶搜索日期範圍的事件(往返)返回然後提交它將只返回該範圍內的事件。我看過濾器,但感到困惑,並不能確定這是我真正需要的?

任何幫助將不勝感激!

編輯

所以,如果我有這樣的:

<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?節?

感謝

回答

1

你可以做這樣的事情:

在視圖把你date_pickers與輸入這樣的:

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 
+0

看到編輯:

<%= form_tag your_search_path, method: :post do%> # here your datepicker content <%= submit_tag 'Send' %> <% end %> 
在控制器

請:) –

+0

好吧,爲你增加更好的解決方案:) –