2016-09-10 14 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 

は、今私が望んだものを、ユーザーが(ととの)日付範囲を検索することができますビューでシンプルな日付ピッカー、あるイベントのそれを提出すると、その範囲のイベントのみを返します。私は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?セクションに行くだろう?あなたはこのような何か行うことができます

おかげ

答えて

1

:あなたのコントローラで

<%= form_tag your_search_path, method: :post do%> 
    # here your datepicker content 

    <%= submit_tag 'Send' %> 
<% end %> 

:ビューで

は、このような入力を使用して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

は編集を参照してくださいしてください:) –

+0

あなたのために良いソリューションを追加しました。 –

関連する問題