2016-02-05 66 views
0

我試圖通過從Rails進行簡單搜索來搜索標題/正文。但是當我試圖把匹配的字符串放在標題/正文中時,它不能顯示期望的結果。你能幫我檢查一下嗎?謝謝你在前進

article.rb
無法在rails中搜索鏈接

def self.search(query) 
    # where(:title, query) -> This would return an exact match of the query 
    where("title LIKE ? or body LIKE ?", "%#{query}%", "%#{query}%") 
    end 

控制器

if params[:search] 
     @articles = Article.search(params[:search]) 
    #@articles = Article.where(["title || body like ?","%#{params[:search]}%"]) 
    else 
     @articles = Article.all 
    end 


顯示

<%= form_tag(articles_path, :method => "get", id: "search-form") do %> 
<%= text_field_tag :search, params[:search], placeholder: "Title or body" %> 
<button class="btn btn-success-outline" type="submit">Search</button> 

在github上的鏈接請把詳細信息:https://github.com/khoinguyen91/CoderSchool_blog

+0

在第一個參數值中缺少'#',即'「%{query}%」'而不是'「%#{query}%」'? – mikej

+0

啊,對不起,這是錯字。我在我的問題中糾正了它。 –

+1

正確..你需要給問題增加一點細節然後..當你提到它不會顯示預期的結果..會發生什麼呢? – mikej

回答

1

OK,簡單瀏覽了一下在GitHub上的代碼的其餘部分,問題是here

def index 
    #@articles = Article.all 
    if params[:search] 
    @articles = Article.search(params[:search]) 
    #@articles = Article.where(["title || body like ?","%#{params[:search]}%"]) 
    else 
    @articles = Article.all 
    end 
    @markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML) 
    if params[:tag] 
    @articles = Article.tagged_with(params[:tag]) 
    else 
    @articles = Article.all 
    end 
end 

檢查params[:search]你之後檢查params[:tag]從您的搜索表單提交時,它將爲空白。這意味着@articles只是被文章的完整列表(@articles = Article.all)所取代。

+1

感謝mikej,這似乎是我在這裏的卡住點。它現在有效。我想爲你效勞,但這不是聲望:D –