【发布时间】:2016-06-08 14:51:18
【问题描述】:
我有一个 Rails (4+) 非典型用例,其中一个控制器操作需要使用另一个控制器操作的逻辑...
这个问题是相关的: 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
如何更改我的引擎以实现新的用例,以及如何从主应用程序控制器以串行方式执行这些引擎控制器操作?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4