我想用一个方法作为两个控制器中的过滤器。我可以放置一个中心位置,还是必须在两个控制器中复制代码?
答案 0 :(得分:0)
两种方式。
我。您可以将它放在ApplicationController中并在控制器中添加过滤器
class ApplicationController < ActionController::Base
def filter_method
end
end
class FirstController < ApplicationController
before_filter :filter_method
end
class SecondController < ApplicationController
before_filter :filter_method
end
但问题是这个方法将被添加到所有控制器,因为它们都从应用程序控制器扩展
II。创建父控制器并在那里定义
class ParentController < ApplicationController
def filter_method
end
end
class FirstController < ParentController
before_filter :filter_method
end
class SecondController < ParentController
before_filter :filter_method
end
我已将其命名为父控制器,但您可以提供适合您情况的名称。
您还可以在模块中定义过滤器方法,并将其包含在需要过滤器的控制器中