非常に複雑なルーティング スキームを使用しています。コンソールを使用してテストするとすべて問題ありませんが、実稼働環境ではルーティング エラー: ルートが一致しませんで爆発します。
ルート
resources :sports, :only => [ :show ] do
member do
get ':page', :to => 'sports#facilities'
end
end
resources :provinces, :path => '', :only => [ :show ] do
resources :municipalities, :path => '', :only => [ :show ] do
resources :neighbourhoods, :path => '', :only => [ :show ] do
resources :sports, :only => [ :show ] do
member do
get ':page', :to => 'sports#facilities'
end
end
end
resources :sports, :only => [ :show ] do
member do
get ':page', :to => 'sports#facilities'
end
end
end
resources :sports, :only => [ :show ] do
member do
get ':page', :to => 'sports#facilities'
get 'deals'
end
end
end
これは、ルートが正しく認識されているかどうかを確認するために行うことです。
1.9.3p194 :001 > r = Rails.application.routes
=> #<ActionDispatch::Routing::RouteSet:0x007fa7f3a0edb0>
1.9.3p194 :002 > r.recognize_path( '/milano/milano/sports/tennis' )
=> {:action=>"show", :controller=>"sports", :province_id=>"milano", :municipality_id=>"milano", :id=>"tennis"}
1.9.3p194 :003 > r.recognize_path( '/milano/milano/sports/tennis/1' )
=> {:controller=>"sports", :action=>"facilities", :province_id=>"milano", :municipality_id=>"milano", :id=>"tennis", :page=>"1"}
1.9.3p194 :004 > r.recognize_path( '/sports/tennis/1' )
=> {:controller=>"sports", :action=>"facilities", :id=>"tennis", :page=>"1"}
実稼働環境で同じことを試してみると、:page が nil であり、パスが認識されないことがわかります。まったく同じページです。奇妙なことに、ページに構文エラーか何かがある場合、発生する例外はページ内で発生した例外であり、修正するとルーティングエラーが発生します...
コントローラーに渡されるパラメーターは {:controller=>"sports", :action=>"facilities", :id=>"tennis", :page=>nil} であり、/ を使用する場合でも、常にそのようになっています。 2/3。
誰かがそのようなことを経験したことがあり、私を助けることができますか?
レールは 3.2.7
前もって感謝します。