リクエストURLの末尾にスラッシュがあるかどうかに応じて、Railsのroutes.rbで異なるルーティングを実行する方法はありますか? リクエスト オブジェクトの末尾のスラッシュが削除されているため、これは難しいように思えます。この動作により、リクエストベースの制約とroute-globbingを使用したマッチングが妨げられます。
1561 次
1 に答える
1
私が見つけた 1 つの解決策は、リクエストで送信された生の URL を含む request.env["REQUEST_URI"] を使用することです。残念ながら、これはリクエストの直接の文字列プロパティではないため、カスタム マッチング オブジェクトが必要です。
class TrailingSlashMatcher
def matches?(request)
uri = request.env["REQUEST_URI"]
!!uri && uri.end_with?("/")
end
end
AppName::Application.routes.draw do
match '/example/*path', constraints: TrailingSlashMatcher.new, to: redirect("/somewhere/")
end
それはやり過ぎのように思えるので、誰かがよりエレガントなアプローチをとることを願っています。
于 2013-02-04T22:00:06.810 に答える