質問: ### 前提・実現したいこと 以下のようなURLで画面遷移を行うWebサイトを作成したいです。 http://fullmenu/list メニュー1をクリック 引数でdomain1とMenu1という文字列を渡す → http://domain1/Menu1/menu1controller/action → http://domain1/Menu1/menu1controller/action2 http://fullmenu/list メニュー2をクリック 引数でdomain2とMenu2という文字列を渡す→ http://domain2/Menu2/menu2controller/action → http://domain2/Menu2/**menu1controller**/action2 文章で説明するのが難しいですが、フルメニューから画面遷移するメニューによって、urlのうちdomainとmenuidの部分を引数によって変更し、controllerとactionは同一のソースを使用する場合があるようなWebサイトのイメージです。 実現したいRoute:http://[domain]/[menuname]/[action]/[controller] ### 発生している問題 * urlのdomainとmenuidを引数によって動的に変更させる方法がわかりません。 そもそもこういったことは可能なのでしょうか?可能なのであれば、routeconfigの書き方を教えていただきたいです。 * また、各コントローラーから、urlのdomainとmenuidの値を取得する方法はありますでしょうか? (asp.netでいうRouteData.Valueのようなメソッドはないでしょうか? 参考:https://garafu.blogspot.jp/2013/06/aspnet-mvc_2496.html) ### 試したこと 下記のサイトに、subdomainを設定する方法が書かれていたのですが、このような実装方法が一般的なのかどうかと、実現したいのはdomainとmenuidという2つのrouteをurlに含めることなので、実現方法が異なるのではないかと思い、ご質問させていただきました。 http://web-salad.hateblo.jp/entry/2014/04/03/215341 ``` constraints Subdomain::Api do namespace :api, path: Subdomain::Api.path do resources :users end ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Rails5
回答: * controller_name,action_nameや、params[:domain]でルートの値を取得できました。 * ルートは get ':domain/:menuid/:controller/:action'のような記載で、動的なルーティングを作成できました。 余談ですが、今回なぜこのようなことをしたかったかというと Aメニュー View1→View2→View3→View4 Bメニュー View1→View2→View4→View5 のような、共通のViewのソースを使うメニューで、通ってきたメニューの履歴をパンくずリストで作成したいと考えていて、それに関する処理をURLに含まれているMenuidによって区別したかったためです。