2011-07-21 98 views
1

我正在使用Windows Server 2003上的Rails 2.3.11下運行的舊客戶端應用程序。所有應用程序都依賴於一條簡單的全路徑(地獄耶!):Rails命名空間路由 - Windows vs Linux

map.connect ':controller/:action/:id' 

我有一些嵌套的模塊,一切工作正常在Windows(產品)和Mac OS(開發)。

url_for(:controller=>'/settings/users', :action=>:index) 
#=> Settings::Users#index 

最近我從Mac OS更改爲Ubuntu 11.04。一切正常,除了這些嵌套的路線。

url_for(:controller=>'/settings/users', :action=>:index) 
#=> Settings#users 

有沒有人知道發生了什麼?爲什麼只有Linux這個問題?

+0

':controller =>'/ settings/users''是做什麼的?也許它把它作爲一個絕對的文件系統路徑, – loosecannon

+0

Nop。這是假設映射到操作'索引'的控制器'設置::用戶'。我的問題是,在我的Linux系統上,它映射到控制器的「設置」和操作「用戶」......所以不,它並不是絕對的文件系統路徑。 – christianblais

回答

1

如果以特定方式影響路由,這不太可能是操作系統特有的問題。您是否有任何理由在/前加上控制器名稱?命名路線通過非常具體的方式避免了大部分的混亂,所以很遺憾你沒有它們。

這兩個系統上的寶石版本可能略有不同,也許是非常微妙的東西。這樣

map.namespace :settigns do |settings| 
    settings.connect '/:controller/:action/:id 
end 

什麼用map.namespace

+0

寶石確定(不幸...),我檢查了。問題與沒有前綴'/'相同。不管怎麼說,還是要謝謝你。 – christianblais

+0

在一次長距離拍攝中,「耙路」的輸出對於兩者來說都是一樣的嗎?你真的沒有太多的路由在那裏。您也可以嘗試使用'assert_routing'功能測試來嘗試和驗證行爲。 – tadman

0

試試服用點,這是我該怎麼辦控制器模塊中,除了其不同類型的路由

map.namespace :admin do |admin| 
    admin.resources :reports, :only => [:new, :create ] 
    admin.connect 'reports/generate/:action/*rest', :controller => 'reports' 
    admin.resources :approval, :controller => 'approval', :only => [ :index, :create ] 
    admin.resource :home, :controller => 'home' 
end 

希望這有助於