2012-10-10 20 views
1

我已經看了幾個Railscasts,我知道這很簡單,但無法讓它建立。Rails 3.2.5:簡單的問題與搜索,需要返回'沒有找到結果'如果沒有發現

實際的搜索本身工作正常。

如果我輸入例如'我們',它會返回所有結果'我們'。很公平。

在我listing.rb文件我有

def self.search(search) 
    s = "%#{search}%" 
    if search 
     find(:all, :conditions => ["comments LIKE ? or doctor LIKE ? or website LIKE ? or  
     url LIKE ? or date LIKE ?", s, s, s, s, s]) 
    else 
     find(:all) 
    end 
    end 

在我listings_controller文件我有:

def index 
    @listings = Listing.search(params[:search_text]) 
end 

因此,在其他部分我顯然不希望找到(:所有)

什麼是編碼等效返回無或找不到?返回零?

如果你是在表單本身,它是空白的,你打回車,它應該什麼都不返回,它應該說「沒有找到結果」或類似的東西。

通知本身必須在控制器中,我的意思是我不能像渲染一樣:text =>'找不到結果'或其他東西?

或類似

elsif 
    search.blank? 
    render [:index], flash[:notice] = 'No Results Found' 
end 

我知道這是很簡單,但被淘汰的編碼遊戲了一下,和相對較新的回報率一般。

任何輸入,非常感謝。由於

+0

它的軌道<3語法 – Amar

回答

0

試試這個變化,按您的代碼

def self.search(search) 
    s = "%#{search}%" 
    if search 
     where("comments like (?) or doctor like (?)",s,s) 
    else 
    all 
    end 
    end 
+0

對不起,Amar並沒有像以前那樣完成同樣的事情,只是寫得有點不同? – DnfD

+1

哦,而不是全部在其他設置空陣列[]或無 – Amar

2

我不認爲代碼必須是在控制器

def self.search(search) 
    s = "%#{search}%" 
    if search 
     find(:all, :conditions => ["comments LIKE ? or doctor LIKE ? or website LIKE ? or  
     url LIKE ? or date LIKE ?", s, s, s, s, s]) 
    else 
     nil 
    end 
    end 

,並鑑於

<% if @listings.present? %> 
//some code here 
<% else %> 
    <p>No results found</p> 
<% end %> 
+0

嗨Salil感謝您的答覆。所以這個觀點肯定有幫助,而且很簡單。所以現在,如果我在表單中輸入一些隨機垃圾,比如'asdnadasdad',則不會返回任何內容,並且會顯示'未找到結果'。嗯不錯。現在我的問題是,如果我在搜索表單中輸入任何東西(如空白,我輸入),我怎麼會得到它,然後什麼都沒有返回,並說沒有找到結果? – DnfD