2012-06-28 63 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

好的,如果输入了错误的搜索,我没有显示任何内容,但如果输入空白搜索,它仍然显示所有内容。我编辑了上面的代码来添加代码。 –