rails 3 - 多个控制器之间共享的代码 - 放在哪里?

时间:2011-08-14 11:43:52

标签: ruby-on-rails-3 model-view-controller

我的2个控制器中需要一段代码,但不是全部。这种方法属于哪里? 我已经阅读过有关帮助程序的内容,但这些内容似乎与视图相关的代码有关。有人提出了lib文件夹,但这似乎与控制器逻辑“相距太远”,我在视图或模型中不需要它。 有人遇到过那种问题吗?

1 个答案:

答案 0 :(得分:11)

有三个选项,最简单的(尽管是最不干净的)是应用程序控制器。另外两个选项是共享父控制器

class FooController < FooBarParentController
   # code here  
end

class BarController < FooBarParentController
   # code here  
end

用法取决于这些控制器的相关性。

最终解决方案是一个模块

module FooBarModule
  extend ActiveSupport::Concern

  included do
    # class level code
    # before_filter ....
  end

  module ClassMethods
    # all class methods here
  end

  # instance methods here
end

这是少数ad-hoc控制器所需的共享代码,或者如果您已经在使用上面的继承,并且此代码不完全适合此子集(因此尝试模拟多重继承)。< / p>