保持控制器DRY:在哪里放置共享方法?

时间:2013-09-20 17:19:59

标签: ruby-on-rails dry

我的代码开始有重复....因为我不知道在哪里放置需要由(2)不同的控制器访问的方法/函数,只是为了快速得到它我只是重复它。

所以我有一个users_controller,一个pages_controller和posts_controller。

在用户页面上,我显示了帖子。

在主页上,我也有帖子显示。

我应该在哪里放置共享/公共代码,以便users_controller和pages_controller以及posts_controller都可以访问这些方法?

现在,我在某些控制器中有重复的def方法,并且每个控制器中也有一些重复的私有方法。


在相关说明中,如何从另一个控制器访问一个控制器中定义的方法?

2 个答案:

答案 0 :(得分:1)

也许是一个模块?

module ProductSharedMethods    
  def product_list
    Product.scoped
  end
end

class UsersController < ApplicationController
  include ProductSharedMethods

  def index
    @products = product_list
  end
end

答案 1 :(得分:0)

如果您在两个单独的页面上显示帖子,则使用部分。我不知道您使用的是哪个版本的rails,但是较新的版本具有共享部分的视图/应用程序文件夹。

如果您有一个跨多个控制器共享的方法,则将其放入应用程序控制器中。控制器是类,因此遵循所有常规规则。

希望有所帮助。