有时我需要从一个控制器使用另一个控制器的操作。我现在所做的是实例化它并使用它的操作,但它让我感觉它不正确我所做的,所以我被告知不可能有同一个控制器的几个实例。
什么是最佳做法?非常感谢。
答案 0 :(得分:1)
这是您链接控制器的方式
制作方法。self
class TestController < ApplicationController
def self.get_details(data)
end
end
然后:
class ChildrenController < ApplicationController
def set_details
TestController.get_details(data)
end
end
创建库模块的其他选项
module CommonStuff
def common_thing
# code
end
end
require 'common_stuff'
class MyController < ApplicationController
include CommonStuff
# has access to common_thing
end
答案 1 :(得分:1)
Rails中的良好实践是将通用逻辑移动到service / module / lib / gem。如果您需要的操作仅特定于控制器,那么您可以定义抽象控制器并从中继承控制器。就像使用ApplicationController
一样。