URL サフィックス (つまり、 www.example.com/ suffix ) がイニシャライザの 1 つのハッシュ キーに対応する場合にのみ、特定のコントローラ (sample_controller と呼びます) にリクエストを転送するルーティング式を作成しようとしています。 . それ以外の場合は、Rails にリクエストを別のコントローラー (たとえば、1 つのルートが参照する) にルーティングしてもらいます。たとえば、 hash を指定するとRELEVANT_HASH = {"a" => "yada", "b" => "bla"}
、 www.example.com/ a は sample_controller にルーティングされますが、 www.example.com/ cはルーティングされず、代わりにルートのルートがロードされます。
私は置くことによってそれをやろうとしてきました
match '/:page_name' => 'sample_controller#action', :as => :something, :constraints => lambda { |r| MyInitializer::RELEVANT_HASH.has_key?(r.params[:page_name]) }
私のroutes.rbファイルで。ただし、ActionDispatch::Routing::Mapper のコンテキスト内にあるため、routes.rb の do/end ブロック内から MyInitializer を使用することはできず、Rails は「初期化されていない定数 MyInitializer」エラーを返します。
MyInitializer を routes.rb からアクセスできるようにする (たとえば、application.rb から参照する) 回避策はありますか? コードを do/end ブロックの外に配置すると、スコープの問題は解決しますか? または、MyInitializer を routes.rb に公開せずに目標を達成する別の方法はありますか?