我有一个Rails(4+)不典型的用例,其中一个控制器动作需要使用另一个控制器操作的逻辑...如何从Rails主应用程序控制器执行Ruby on Rails引擎的控制器操作?
这个问题是相关的: Rails: call another controller action from a controller 但其答案只能解决重定向到的情况下另一个控制器或委托渲染到另一个控制器,但我需要使用一些数据从另一个控制器转换逻辑,并得到转换结果反馈给呼叫控制器...
预赛: 我的Rails应用程序取决于几个本地Rails引擎,装载在主应用程序中离子Gemfile与:
gem 'my_engine', :path => '../my_engine'
这些引擎实现输入数据转换与MVC和路由REST服务。 他们使用一些主要的应用程序(配置)的机型,延长主应用程序的基本控制器有像主应用程序等相同的REST授权...
使用案例: 现在我的新的用例需要我在主应用程序控制器内部使用这些引擎控制器动作,以串行方式将这些引擎的输入数据转换并将转换结果返回给调用控制器。
伪:
在主要应用:app/controllers/api/main_app_controller.rb:
class Api::MainAppController < ApplicationController
def index
result = params['data']
my_engines.each do |my_engine|
result = my_engine.execute_engine_controller_action(input)
end
render result
end
end
如何做我必须改变我的引擎,以满足新的使用情况以及我如何在执行这些发动机控制器动作从主应用程序控制器的串行方式?