web-dev-qa-db-ja.com

Railsコントローラ名前空間

Ruby on Rails)で名前空間を使用することの利点と欠点は何ですか。例:次のような多くのコントローラがあります。

CompanyLocations 
CompanyXXXX 
CompanySports 
CompanyActivites
CompanyQQQQQ

これらすべてのコントローラーをCompanyフォルダーに配置したいと考えています。 Railsこれのベストプラクティスは何ですか?

16
kashif

あなたはあなたのcontroller /ディレクトリ内に、そして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
37
Jenorish

コントローラーをフォルダーにプルするだけです。
フォルダーを作る app/controllers/company
enter image description here
コントローラを作成します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 を使用できます。

25
Зелёный