我在哪里放置一个过滤器来过滤Rails中两个控制器中的方法

时间:2013-12-31 23:12:25

标签: ruby-on-rails dry

我想用一个方法作为两个控制器中的过滤器。我可以放置一个中心位置,还是必须在两个控制器中复制代码?

1 个答案:

答案 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

我已将其命名为父控制器,但您可以提供适合您情况的名称。

您还可以在模块中定义过滤器方法,并将其包含在需要过滤器的控制器中