0

簡単な検索フォームが必要だとしましょう。

<form action="<%= search_path %>" methode="GET">
  <input type="text" placeholder="where?" name="place_name" />
</form>

次のように表示できるように、入力フィールドに基づいてURLを生成する必要があります。

/search/some-value

私は試した:

match 'search(/:place_name)', to: 'some_controller#some_action', as: 'search'

なぜそれが機能しないのか、または私がここで間違っていることを提案しますか?

4

2 に答える 2

0

フォームを送信すると、フォーム内の入力を介して設定されたパラメーターが、クエリパラメーターを使用してURLに追加されます。この場合、次のようになります。

/search?place_name=some-value

これが基本的なフォームの動作であり、Javascriptを使用してリクエストを処理する場合を除いて、これを回避する簡単な方法はありません(この場合はお勧めしません)。

ただし、デフォルトの動作を使用するには、ルートは次のようになっている必要があります。

match 'search', to: 'some_controller#some_action', as: 'search'

その後、パラメーターplace_nameは以下を使用してコントローラーで使用可能になります。

params[:place_name] 

お役に立てれば。

于 2012-12-09T11:39:48.323 に答える
0

次のコードは、Unicodeと追加のパラメーターをサポートしています。

get "search/*place_name" => "store#search"
get "search" => redirect {|_, req| 
  params = req.query_parameters
  query = Rack::Utils.escape params.delete(:place_name){"%"}
  "/search/#{query}#{params.to_query.prepend('?') if params.any?}"
}, as: :search
于 2013-09-06T06:56:42.143 に答える