今作成しているRails製アプリのルーティング(routes.rb)に以下のようにルーティングを定義しております。
Ruby
1resources :users, only: [:show] 2 3namespace :users do 4 resources :hoges, only: [:index, :show] 5end
ターミナル等でrails routes
を打った際には以下のように出力される状態です。
user GET /users/:id(.:format) users#show users_hoges GET /users/hoges(.:format) users/hoges#index users_hoge GET /users/hoges/:id(.:format) users/hoges#show
また、コントローラに以下のように定義されております。(それぞれ別ファイルですが、便宜上まとめて記載しております)
Ruby
1class UsesController < ApplicationController 2 3 def show 4 end 5end 6 7class Uses::HogesController < ApplicationController 8 9 def index 10 end 11 12 def show 13 end 14 end
ここで困ったことが発生してしまっておりまして、
view側にusers_hoges_path
でリンクを設定して、遷移した場合、
何故かUsesController側のshowアクションに処理が渡ってしまっております。。
=>意図する挙動はUses::HogesControllerのindexアクションに処理が渡ることです
また、これも謎なのですが
ルーティングの記述を以下のように変更すると目的のUses::HogesControllerのindexアクションに処理が渡ります。
※各ルーティングの記述を入れ替えた形
Ruby
1namespace :users do 2 resources :hoges, only: [:index, :show] 3end 4 5resources :users, only: [:show]
何故このような現象が発生してしまうのか全く検討がつかないのですが、
どなたかご教授いただけませんでしょうか・・(users_hoges_path
に該当する遷移先はひとつしかないのですが。。)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。