2010-11-08 51 views
3

我正在使用相當大的路徑文件的rails 3項目。它利用了一些嵌套,我遇到了一個問題,很大程度上是因爲路由文件很難管理。什麼是將您的routes.rb文件分解爲多個文件以更好管理的好方法?

有沒有辦法將它分解成多個文件?

喜歡的東西:

My::Application.routes.draw do 
    constraints(:subdomain => 'admin') do 
    include My::Application::Routes::AdminRoutes 
    end 

    include My::Application::Routes::MainRoutes 
end 

或者......

My::Application.routes.draw do 
    constraints(:subdomain => 'admin') do 
    require 'routes/admin_routes.rb' 
    end 

    require 'routes/main_routes.rb' 
end 

或者類似的規定。

謝謝!

回答

6

include將包含的模塊的方法插入名稱空間,require只是將文件加載到頂級名稱空間中。這些都不會爲你工作。

只是load的單獨文件

My::Application.routes.draw do 
    constraints(:subdomain => 'admin') do 
    load 'routes/admin_routes.rb' 
    end 

    load 'routes/main_routes.rb' 
end 
+0

看起來很酷給我。我們會試一試,看看我們在哪裏。 – 2010-11-08 19:21:04

+1

那個'routes/admin_routes.rb'文件必須看起來像什麼?我們遇到了一些嘗試不同事情的問題。它只是需要包裹在模塊中嗎? – 2010-11-12 16:49:15

+0

據我所知,它是在上下文中進行評估的,所以它應該只包含如果你沒有將它分解成單獨的文件的話。 – edgerunner 2010-11-12 21:15:09

0

另一種選擇,你可以使用

ActionController::Routing::Routes.draw do |map| #routes.rb 

    extend NewConnections 

    some_method(map) 

end 


module NewConnections #/lib/new_connections.rb 

    def some_method(clazz) 
    clazz.root :controller => "demo" 
    end 

end 

這將連接您的應用程序的根目錄默認控制器

+1

這對Rails 2.x路由很有用。它仍然可以使用Rails 3.0,但是使用'map'不推薦使用,它會在3.1+上失敗 – edgerunner 2010-11-08 20:40:17

相關問題