0

railscasts.com を見ると、Ryan がサイトの検索フィルターをどのように実装したかが気になります。検索パラメーターがデータベース内の何も一致しない場合、すべてのレコードが返されます (たとえば、URL の検索パラメーター値に無効なパラメーターを入力すると、フィルターするものが何もないため、すべてのレコードが返されます)。データベース内のレコードと一致する場合、一致するレコードのみを返します。

どのように達成されていますか?これには gem/full-text-search を使用せずに Active Record のみを使用できますか? そのクエリは Arel ではどのように見えるでしょうか?

また、フィルター リンク (検索後にページの上部にあるリンク) をどのように実装していますか? 各検索パラメータを解析し、検索パラメータを 1 つずつ削除してページ上のリンクを生成していますか?

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 に答える