我想从另一个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
直接。
答案 0 :(得分:0)
actiona
是一个实例方法。您无法在课程actiona
上致电TestController
。
此外,如果可行,您将同时执行从render
和actiona
对actionb
的调用,这没有任何意义。调用控制器动作只能调用render
一次。
如果要从actiona
执行actionb
,可以使用redirect_to
和参数来触发重定向。
如果只想从TestController
渲染actionb
的视图,则可以在使用render
方法时指定期望的视图。
如果您只想重用某些代码,则可以将代码的那一部分提取为关注点。