下面是我尝试改进的“简单搜索表单”(感谢jordinl)的代码。如果找不到匹配项,我想补充说明。Ruby/Rails条件搜索方法(if ... else“找不到结果”)
所以,有观点(视图/用户/ index.html.erb)
<% form_tag users_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
<% end %>
<% @users.each do |user| %>
<p><%= link_to "#{user.name}", user %></p>
.
.
.
<% end %>
控制器(users_controller.rb)
def index
@users = User.search(params[:search])
end
和在用户模型的方法:
def self.search(search)
search.blank? ? [] : all(:conditions => ['name LIKE ?', "%#{search.strip}%"])
end
我试过如下:
def self.search(search)
if search.to_s.size < 1
[]
else
if @users.size > 0
all(:conditions => ['name LIKE ?', "%#{search.strip}%"])
else
render :text => "No result found"
end
end
end
报告出现以下错误:“您没有预期它的零对象!”(数组中没有实例)。然后,我试图添加
<% if @users? %>
<% @users.each do |user| %>
.
.
.
在视图中。但它也不起作用。
我会很高兴地明白为什么我错了。谢谢!
感谢您的热心帮助!Regards – benoitr 2010-09-13 17:02:05
这是一种常见的模式,如果您是这种事情的粉丝,您可以随时帮助它。 – tadman 2010-09-13 19:56:35