从另一个ControllerB动作调用ControllerA动作,从Ruby on Rails中的ControllerB动作传递一些参数给ControllerA动作

时间:2019-06-28 19:26:38

标签: ruby-on-rails ruby performance controller ruby-on-rails-5.2

我想从另一个TestController#actiona调用ResultController#actionb,同时将actiona的参数与rails中的调用一起传递。 有谁知道最有效的方法是什么?

我尝试像下面的代码一样调用该方法,但出现错误。我在做什么错了?

示例伪代码:

 class TestController  < ApplicationController 
    def actiona
       # @value = do_something_with(params) // we are doing something with params
       # render resource: @value, status: 201
    end
end
 class ResultController  < ApplicationController 
    def actionb
        # new_params = params + some_other_things // building new params
        # @new_value = TestController.actiona(new_params) // we are passing the new_params
        # render resource: @new_value, status: 201
    end
end

我希望对ResultController#actionb的调用会与TestController#actiona一起调用params,并呈现与@value返回的TestController#actiona相同的services.yaml直接。

1 个答案:

答案 0 :(得分:0)

actiona是一个实例方法。您无法在课程actiona上致电TestController。 此外,如果可行,您将同时执行从renderactionaactionb的调用,这没有任何意义。调用控制器动作只能调用render一次。

如果要从actiona执行actionb,可以使用redirect_to和参数来触发重定向。

如果只想从TestController渲染actionb的视图,则可以在使用render方法时指定期望的视图。

如果您只想重用某些代码,则可以将代码的那一部分提取为关注点。