1

非常に複雑なルーティング スキームを使用しています。コンソールを使用してテストするとすべて問題ありませんが、実稼働環境ではルーティング エラー: ルートが一致しませんで爆発します。

ルート

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

前もって感謝します。

4

0 に答える 0