2016-09-12 32 views
0

我想要的日期範圍過濾器添加到我的searchkick未定義的方法`where`爲searchkick

這是我

@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 params[:date_from] 
     byebug 
@events = @events.where('date BETWEEN ? AND ?', params[:date_from], params[:date_to]) 
    end 

然而,我發現了問題是這樣的:

*** NoMethodError Exception: undefined method `where' for #<Searchkick::Results:0x007f95eaf97f90> 

任何幫助,將不勝感激

編輯

我知道這是另外一個問題可能更好,但它有點相同的問題

def search 
    @events = Event.page(params[:page]).per(10) 
    if params[:date_from] 
     @events = @events.where('date between ? AND ?', params[:date_from], params[:date_to]) 
    byebug 
    end 

    @events = @events.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' 
    end 
end 

現在,這是不工作我怎麼想的那樣,我已經得到了事件名稱,datefrom和通過參數傳遞。如果我在byebug上鍵入@events它會得到範圍內的事件,但不會得到我需要的事件

回答

0

它看起來像searchkick使用它自己的查詢語法。所以像這可能幫助

search_opts = { 
    misspellings: { distance: 1 }, 
    order: { date: :asc, eventname: :asc }, 
    match: :word_start, 
    page: params[:page], 
    per_page: 20 
} 
if params[:date_from] 
    search_opts[:where] = { date: {gte: params[:date_from], lte: params[:date_to]} } 
end 

@events = Event.search params[:search], search_opts 
+0

您好,這說明它不過有一個問題,由於某種原因,我的日期範圍過濾器沒有實際工作,我現在將分享我的控制器 –

+1

沒有得到您需要的事件?你需要在你的兩人之間的開始/結束日期生活嗎? – Doon

+0

事件確實是,它實際上仍然返回所有事件。 –

0

爲什麼你有必要。凡() 不應該之前調用。第()這是

def search 
    events = Event 
    if params[:date_from] 
    events = events.where('date between ? AND ?', params[:date_from], params[:date_to]) 
    end 

    events = events.page(params[:page]).per(10) 
    @events = events.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' 
    end 
end 
+0

所以我試着你的方法,我得到了這個錯誤'未定義的方法'頁面'#' –

+0

okie,那麼這個搜索方法是什麼?此外,我已更改代碼執行.page事件activerecord結果,之前搜索 –

+0

相同的原因,當更改爲搜索時不工作的原因是.page不會searchkick方法返回結果而不是activerelation – Doon