ムービーの年が入ったカッコがあるムービー(ルートパス上)のレールルートを作成しようとしています。括弧が拘束されたRORルート
など。黒=> "/男性・イン・ブラック - (1997)" の男性は
私のルートは以下のとおりです。
resources :movies,
path:'/',
only:[ :index, :list, :show ],
constraints: { id: /[A-Za-z0-9-]+\(\d{4}\)/ }
私はこのルート(movie_path(Movie.first))を使用する場合、私は
を取得しますURLルーティングヘルパーを使用している場合、ルートが機能constraints: { id: /[A-Za-z0-9-]+\\\(\d{4}\\\)/ }
:
"ActionController::RoutingError: No route matches: ..."
私はへのルートの制約を変更する場合。しかし、ルートは逆マッピング(例えば "/ men-in-black-(1997)"を取って正しいアクション/コントローラにルーティングする)のためには機能しません。私は(コンソールから)を実行すると:
Rails.application.routes.recognize_path("/men-in-black-(1997)")
は私が同じルーティングエラーが発生します。
ActionController::RoutingError: No route matches
問題はレールがルーティングで正規表現のエスケープどのように関連しているようです。 (\\\をエスケープするとき、オブジェクトへのルートマップは失敗しますが、URLツールートが動作します。しかし、\でエスケープするために(それは反対である。
誰もがこれで任意のヒントや経験を持っている?
残念ながら、私はSEOの目的のためのルートパスからルートの映画に必要なんだそれは奇妙だが、私はRailsはそれを行うだろうか、それを修正する方法をなぜ分かりません。 –