调用另一个控制器

时间:2016-06-10 13:54:12

标签: ruby-on-rails ruby-on-rails-4 controller

我有名为ChildrenFather以及Mother的控制器,我需要从FatherController调用MotherControllerChildrenController的方法。

我需要从get_details set_details方法将JSON数据传递给两个控制器( 不在同一请求 ChildrenController方法{1}}。我将根据某些条件调用任何控制器方法。

两个控制器中的get_details方法都有无路由。 我不需要任何帮助方法来编写。

我需要调用多个Controller的方法,而不是通过继承。

父亲控制器

class FatherController < ApplicationController

  def get_details(data)
    ##
    ## I need to do some operation with the 'data' received from children controller.
  end

end

母亲控制器

class MotherController < ApplicationController

  def get_details(data)
    ##
    ## I need to do some operation with the 'data' received from children controller.
  end

end

儿童控制器

class ChildrenController < ApplicationController

  data = {
      "id":"2",
      "expiry_date":"25-09-2016"
  }.as_json

  def set_details        
    ## get_details(data) -> FatherController
    ## get_details(data) -> MotherController
  end

end

如果有其他方法可以帮助您如何操作或建议我。

感谢。

3 个答案:

答案 0 :(得分:14)

易。制作方法.self

class MotherController < ApplicationController
  def self.get_details(data)
  end
end 

然后:

class ChildrenController < ApplicationController
  def set_details        
    MotherController.get_details(data)
  end
end

答案 1 :(得分:3)

从控制器中删除此逻辑,或在ApplicationController中定义它,所有控制器都从中继承。

答案 2 :(得分:1)

为什么不简单地将您的功能或方法写入 MODEL

class MotherModel < ApplicationRecord

     def self.mothermodel_method
     end
end


class ChildController < ApplicationController
     def access_mother_method
         @result_from_mother_method = MotherModel.mothermodel_method
     end
end