我有三个型号。
我正在使用名为 check_digit
的功能def checkdigit
(transaction)
end
我将它放在所有控制器中并通过before_filter调用它 但我认为我在浪费,因为我只是将上面完全相同的代码粘贴到所有控制器上。
如果我的控制器共同使用它,我应该把它放在哪里? 我应该把它放在controllers / application_controller.rb吗?
答案 0 :(得分:2)
有几种方法可以做到这一点,一些可能的方法是(如果我这样做)
第一种方法
如果这是控制器使用的简单方法 在application_controller.rb中
private
def checkdigit
(transaction)
end
第二种方法
如果您的功能由特定类别使用(通常我经常这样做),请创建一个单独的控制器并让您继承所有其他控制器
例如:如果您的方法仅使用我的管理员,并假设您有更多类似的方法
class AdminController < ApplicationController
layout 'admin'
private
def checkdigit
(transaction)
end
end
and
class UsersController < AdminController
end
第三种方法
如果您的方法是/将由模型/控制器等使用..考虑将其作为模块
module CommonMethods
def checkdigit
(transaction)
end
end
class UsersController < ApplicationController
include CommonMethods
end
HTH
答案 1 :(得分:1)
您可以将其放在helpers/application_helper.rb
答案 2 :(得分:1)
您是对的,所有控制器所需的所有常用方法都应存储在ApplicationController
。
此外,您还应该在此控制器中的所有控制器之间保持通用逻辑。
修改强>
如果他们只是帮助者,那么你会把它们放在帮助者去的地方,看看@simone的回答。