1

リクエストURLの末尾にスラッシュがあるかどうかに応じて、Railsのroutes.rbで異なるルーティングを実行する方法はありますか? リクエスト オブジェクトの末尾のスラッシュが削除されているため、これは難しいように思えますこの動作により、リクエストベースの制約route-globbingを使用したマッチングが妨げられます。

4

1 に答える 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 に答える