0

形式の get リクエストを受信したときに投稿を検索できる Rails アプリケーションがあります/posts/search/:searchstring。ブラウザの URL バーを使用して検索文字列を入力すると、機能に問題はありませんが、検索フォームを作成しようとして立ち往生しています。

上記の構文を使用して get リクエストを送信できる HTML フォームをレールで作成するにはどうすればよいですか? コントローラーメソッドを使用してリダイレクトすることはできますか? URL は UX の一部であると固く信じており、次のような醜い URL は嫌いなので、この機能が本当に必要です。

http://example.com/search?utf8=%E2%9C%93&q=searchstring&commit=Search
4

2 に答える 2

1

フォームはフォームが行うことを行います。GET を使用するフォームがある場合は、それらのパラメーターをクエリ文字列にシリアル化します。

ただし、 get使用しているため、フォームを送信する必要もありません。むしろ、ブラウザを URL に送信するだけです。

たとえば、JS のどこかで次のようにします。

function doSearch(form) {
  // This assumes that the first input of your form is the search
  // box.  YMMV.
  var query = encodeURIComponent(form.elements[0].value);

  // just send the browser to the constructed URL
  window.location = form.action + "/" + query;

  // and return false to prevent the actual submit
  return false;
}

次に、あなたのhtmlで:

<form action = "/posts/search" onsubmit="return doSearch(this)">
  <input type="text" name="searchstring" />
  <input type="submit" />
</form>
于 2013-04-23T15:30:00.187 に答える
0

この方法でフォームを追加するのはどうですか:

<form method="get" action="<%= search_posts_url_path %>">#text input here with name "searchstring"</form>
于 2013-04-23T12:19:10.287 に答える