项目中 routes 太多太乱时,仅仅备注的话是很乱的,因此可以考虑将之分组之分割到不同的文件里。
解决的思路如下:
#config/routes.rb
YourApppic::Application.routes.draw do
resources :products
resources :categories
namespace :admin do
resources :products
end
get 'welcome/index'
end
cd path/to/your_app/config
mkdir routes
touch admin_routes.rb
touch data_routes.rb
touch none_restful_routes.rb
而后变成:
#config/admin_routes.rb
YourApppic::Application.routes.draw do
namespace :admin do
resources :products
end
end
#config/routes/data_routes.rb
YourApppic::Application.routes.draw do
resources :products
resources :categories
end
#config/routes/none_restful_routes.rb
YourApppic::Application.routes.draw do
get 'welcome/index'
end
config.paths["config/routes"] += Dir[Rails.root.join("config/routes/*.rb")]`
重启项目,一切 ok .
如果你的 routes 非常依赖顺序。就不要使用 config.paths["config/routes"] += Dir[Rails.root.join("config/routes/*.rb")]
可以考虑指定顺序加载分割后的文件:
# 逐个加载
config.paths.config.routes << File.join(Rails.root, "config/routes/none_restful_routes.rb")
config.paths.config.routes << File.join(Rails.root, "config/routes/admin_routes.rb")
config.paths.config.routes << File.join(Rails.root, "config/routes/data_routes.rb")
# alphabetical 排序加载
config.paths["config/routes"] += Dir[Rails.root.join("config/routes/*.rb")].sort
# 这个需要重命名下文件, 如 0_none_restful_routes.rb, 1_admin_routes.rb, 2_data_routes.rb 这种做法.
http://rails-bestpractices.com/posts/73-split-route-namespaces-into-different-files
http://stackoverflow.com/questions/7303660/splitting-routes-file-into-multiple-files