Rails 3.2.5:搜索的简单问题,如果找不到任何内容,则需要返回“No Results Found”

时间:2012-10-10 14:54:06

标签: ruby-on-rails search conditional

我看了几个Railscasts,我知道这很简单,但无法设置。

实际的SEARCH本身运行正常。

如果我输入说'我们',例如,它会返回带有'we'的所有结果。很公平。

在我的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

在我的listing_controller文件中,我有:

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

所以在else部分我显然不想找到(:all)

什么是返回none或找不到的编码等价物?返回nil?

如果你在表格本身并且它是空白的并且你点击了输入,它应该什么都不返回它应该说“找不到结果”或类似的东西。

通知本身是否必须在控制器中,我的意思是我不能像渲染一样:text => “没有找到结果”或什么?

或类似

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

我知道这很简单但是已经超出了编码游戏的水平,而且一般来说对于RoR来说相对较新。

非常感谢任何输入。谢谢

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:0)

根据您的代码尝试更改

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