在 Ruby Rails 中从另一个控制器动作调用控制器动作从控制器动作传递一些参数给控制器动作

Calling a ControllerA Action from Another ControllerB Action passing some params for ControllerA Action from ControllerB Action in Ruby on Rails

我想从另一个 ResultController#actionb 调用 TestController#actiona,传递 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.new.actiona(new_params) // we are passing the new_params
        # render resource: @new_value, status: 201
    end
end

我希望对 ResultController#actionb 的调用用 params 调用 TestController#actiona 并呈现与 TestController#actiona 相同的 @value 如果我们直接调用它。

actiona 是一个实例方法。您不能在 class TestController 上调用 actiona。 此外,如果它可行,您将同时执行从 actionaactionbrender 的调用,这是没有意义的。对控制器操作的调用只能调用 render 一次。

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

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

如果您只是想重用一些代码,您可以将那部分代码提取到关注中。