0

查看 railscasts.com,我想知道 Ryan 如何为该站点实施搜索过滤器。如果搜索参数与数据库中的任何内容都不匹配,那么他将返回所有记录(例如,如果我们在 URL 中为搜索参数值键入无效参数,则返回所有记录,因为没有任何内容可供过滤)。如果它匹配数据库中的记录,他只返回那些匹配的记录。

是如何实现的?我可以只使用没有任何 gems/full-text-search 的 Active Record 吗?Arel 的查询会是什么样子?

另外,他如何实现过滤器链接(我们进行搜索后页面顶部的链接)?他是在解析每个搜索参数并通过一次删除一个搜索参数来生成页面上的链接吗?

4

1 回答 1

0

我没有看到 Railscasts.com 显示无效过滤器(如搜索参数)时的所有记录。当没有找到记录时,它会返回一个链接以查看所有剧集。例如,请参阅此链接: http ://railscasts.com/episodes?utf8=%E2%9C%93&search = 它说:

未找到任何剧集。查看所有剧集。

但是,如果需要,您可以在这种情况下显示所有记录。这很容易。

  def index
    @records = []
    if params[:search].present?
      #YOUR SEARCH LOGIC and assign to @records. for example:
      @records = Episode.where(:title => params[:search])
    end

    unless @records.length
      @records = Episode.all  
    end
  end
于 2013-03-01T04:59:34.270 回答