: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
それはちょうどそれの世話をする必要があります。
偉大な答え、ありがとう –