如何链接Ruby On Rails中的控制器?

时间:2017-04-08 19:22:36

标签: ruby-on-rails ruby

有时我需要从一个控制器使用另一个控制器的操作。我现在所做的是实例化它并使用它的操作,但它让我感觉它不正确我所做的,所以我被告知不可能有同一个控制器的几个实例。

什么是最佳做法?非常感谢。

2 个答案:

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

创建库模块的其他选项

LIB / common_stuff.rb

module CommonStuff
  def common_thing
    # code
  end
end

的应用程序/控制器/ my_controller.rb

require 'common_stuff'
class MyController < ApplicationController
  include CommonStuff
  # has access to common_thing
end

答案 1 :(得分:1)

Rails中的良好实践是将通用逻辑移动到service / module / lib / gem。如果您需要的操作仅特定于控制器,那么您可以定义抽象控制器并从中继承控制器。就像使用ApplicationController一样。