2012-06-28 98 views
0

我在Rails的一個簡單的搜索:簡單搜索和Rails

def self.search(search) 
# if search is not empty 
if search 
find(:all, :conditions => ["name LIKE ?", "%#{search}%"]) 
# if search is empty return all 
else 
find(:all) 
end 

的觀點:

<% if @registries.empty? %> 
Can't find the registry. Please try a differnet name. 
<% else %> 
<% @registries.each do |registry| %> 
......etc. 

我如何編寫代碼的時候顯示「未找到」而不是查找(:所有)如果它找不到查詢?

我嘗試了一些事情,但沒有任何工作。即使我拿出其他東西,它仍然顯示所有的查詢,如果它找不到一個搜索。

在此先感謝

回答

1

當你的意思是「不空」必須測試針對具體。請記住,Ruby中只有兩個值爲false:falsenil

你可能打算:

if (search.present?) 
    where("name like ?", "%#{search}%").all 
else 
    all 
end 

使用的Rails 3風格where條款,使你的方法有很多更容易理解。使用find:conditions是舊的Rails 1和2樣式。

+0

不知道,但我該如何編碼顯示沒有結果與消息,而不是所有在註冊表中? –

+0

檢查你的結果是不是'空?',並顯示一條消息。 – tadman

+0

好的,如果輸入了錯誤的搜索,我沒有顯示任何內容,但如果輸入空白搜索,它仍然顯示所有內容。我編輯了上面的代碼來添加代碼。 –