我想集中一些控制器的类似操作并编写一个控制器,其他控制器从中继承。这工作正常。
# 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
但现在我想将视图集中到“基本”控制器的视图,所以如果调用继承控制器,则使用的控制器路径应该是基本控制器的。
有没有办法重写控制器名称或控制器路径?
我查看了 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?
非常感谢提前!