在 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
。
此外,如果它可行,您将同时执行从 actiona
和 actionb
到 render
的调用,这是没有意义的。对控制器操作的调用只能调用 render
一次。
如果您想从 actionb
执行 actiona
,您可以使用 redirect_to
和您的参数触发重定向。
如果您只想从actionb
渲染TestController
的视图,您可以在使用render
方法时指定预期的视图。
如果您只是想重用一些代码,您可以将那部分代码提取到关注中。
我想从另一个 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
。
此外,如果它可行,您将同时执行从 actiona
和 actionb
到 render
的调用,这是没有意义的。对控制器操作的调用只能调用 render
一次。
如果您想从 actionb
执行 actiona
,您可以使用 redirect_to
和您的参数触发重定向。
如果您只想从actionb
渲染TestController
的视图,您可以在使用render
方法时指定预期的视图。
如果您只是想重用一些代码,您可以将那部分代码提取到关注中。