Rails控制器命名空间
在rails上使用ruby中的命名空间有什么优缺点。 例如:我有很多控制器喜欢
CompanyLocations CompanyXXXX CompanySports CompanyActivites CompanyQQQQQ
我想将所有这些控制器放在Company文件夹中。 什么是铁路最佳做法?
您必须在控制器/目录中创建一个子文件夹,并在views /目录中创建相同的子文件夹。
你的控制器文件应该是这样的
module Company class SportsController < ApplicationController def index end end end
...要么
class Company::SportsController < ApplicationController def index end end
你也可以用这种方式打电话给你的部分
render :template => "company/sports/index"
然后在routes.rb中
namespace :company do resources :sports end
只需将控制器拉入文件夹即可。
创建文件夹app/controllers/company
并使用结构创建一个控制器locations_controller.rb
:
module Company class LocationsController < ApplicationController layout '/path/to/layout' append_view_path 'app/views/path/to/views' def index end end end
在routes.rb
使用scope :module
:
scope module: 'company' do get '/locations', to: 'locations#index' # this route in scope end
这会产生路线:
locations_path GET /locations(.:format) company/locations#index
更新:
只是提示。 对于视图和布局,您可以使用: ActionController#layout和ActionController#append_view_path 。