2016-05-29 12 views
1

私はコントローラを自分のヘッダのフォームに応答する私のRailsプロジェクトに持っています。今、すべてうまく動作しますが、私が「何か」を検索すると、私のURLにadmin/users/search?q=somethingが得られます。私はこれをユーザーフレンドリーなURL、例えばadmin/users/search/somethingにしようとしています。かなりクエリのパラメータを設定します

get 'search' => 'search#index'からget 'search/:q' => 'search#index', :as =>"searchに私のルートを変更しようとしました。しかし、私のフォーム上では、明示的にパラメータを入れて、form_tag admin_search_path, :enforce_utf8 => false, :method => :GETのようなものは動作しません。パスの前に括弧が必要です。admin_search_path(something)

私のアプリケーションに「すばらしい」検索URLを実装するにはどうすればよいですか?

答えて

1

:qパラメータを使用して試した名前付きルートを使用することができます。フォームから、入力した検索キーワードで動的に経路パラメータを置き換えます。

まず、検索パラメータとして「クエリ」を指定する以外は、通常と同じようにフォームを作成します。また、検索用語フィールド(#q)がでないことを確認してください。にはnameという属性があります。無name属性がサーバーに送信されませんとフォーム要素:

<%= form_tag admin_search_path("query"), :enforce_utf8 => false, :method => :get %> 
    <input type="text" id="q" placeholder="Enter a search term" /> 
    <input type="submit" value = "Search!" /> 
<% end %> 

一つ、ユーザが検索語を入力して提出クリック(またはEnterキーを押す)しているが、我々はルートのquery部分を置き換えますフォームの投稿が新しい名前付きルートと一致するように、実際の検索語句を使用します。このソリューションの

、作らいくつかの仮定がある:

  • onUserSearchReady方法(または同等の)ことがjQueryのは、アプリケーション
  • が有効になっているが、これらの仮定が与えられると、まだ

存在しませんこれをapp/assets/javascripts/user.jsファイルに追加することができます。

function onUserSearchReady() { 
    $.submit(function(event) { 
     var form = $("form"); 
     var action = form.attr("action"); 
     var search_terms = form.find("#q").val().trim(); 

     if (search_terms.length > 0) { 
      var new_action = action.replace(/query/, encodeURIComponent(search_terms)); 

      form.attr("action", new_action); 
     } else { 
      event.preventDefault(); 
     } 
    }); 
}; 

そして、searchビューで、ソースの表示の下にこれを追加します。今すぐ

<script> 
jQuery(document).ready(onUserSearchReady); 
// Also register appropriate TurboLinks ready callbacks, if using TurboLinks... 
// jQuery(document).on('page:load', onUserSearchReady); 
// jQuery(document).on('page:restore', onUserSearchReady); 
</script> 

、ユーザーは検索語フィールド(#q)、クエリは次のようになりますでsomethingを入力:

GET /admin/users/search/something 

それはちょうどそれの世話をする必要があります。

+0

偉大な答え、ありがとう –

関連する問題