いくつかのコントローラーの同様のアクションを集中化し、他のコントローラーが継承するコントローラーを作成したいと思います。これはうまくいきます。
# calling Configurations#index will render configurations/index.html.erb
# while 'configurations' being the internal controller_path used to look for the view
class ConfigurationsController < EditorController
end
class EditorController < ApplicationController
def index
render 'index'
end
end
しかし今、ビューを「ベース」コントローラーのものに集中させたいので、継承コントローラーが呼び出された場合、使用される controller_path はベースコントローラーのものでなければなりません。
コントローラーの名前または controller_path を書き換える方法はありますか?
AbstractController::Base のソースを調べたところ、(90行目)
def controller_path
@controller_path ||= name.sub(/Controller$/, '').underscore unless anonymous?
end
したがって、ベースコントローラーから @controller_path を設定する必要があるだけですよね?これは何も変更しません:
#just does the same as above
class EditorController < ApplicationController
@controller_path = 'editor'
def index
render 'index'
end
end
controller_path を手動で設定する方法はありますか?
よろしくお願いします!