2

Rails 3 で作成された検索フォームをクエリすると、クエリにポイントを入れない限り、すべて正常に機能します。例えば:

http://localhost:3000/en/job/search/q/test     - WORKS
http://localhost:3000/en/job/search/q/test.    - DOES NOT WORK

末尾にポイントがある URL は、

Routing Error: No route matches [GET] "/en/job/search/q/test.

これを解決する方法を知っている人はいますか?ありがとう。

4

2 に答える 2

2

デフォルトでは、Railsは小数点以下のすべてをフォーマットとして解釈します。:constraintsを設定する必要があります

これは、このテーマに関する優れた記事です:http: //coding-journal.com/rails-3-routing-parameters-with-dots/

問題の解決に役立つRailsAPIのリファレンスは次のとおりです。

http://guides.rubyonrails.org/routing.html#specifying-constraints

http://guides.rubyonrails.org/routing.html#dynamic-segments

検索で文字列をgetリクエストとして渡すので、ルートグロブを検討することもできます:http://guides.rubyonrails.org/routing.html#route-globbing

ルートは次のようになります。

match ":language/job/search/*query"

コントローラでは、params[]配列を使用してルートから値を取得します。

q = params[:query]

SQLインジェクション攻撃を回避するために、これをActiveRecordに渡すときは、必ずベストプラクティスを使用してください。

于 2012-08-06T05:32:16.727 に答える