可以在Rack中间件中调用Rails 3控制器吗?

问题描述:

我想用ExtDirect在Rails的3.所以我已经开始了一个第三方ExtJS的用户界面,以更新活动直接宝石和Rails 3.这里的工作是更新的版本:https://github.com/stonegao/active-direct可以在Rack中间件中调用Rails 3控制器吗?

目前我修改后的活动直接插件/宝石与模型一起工作。我可以在JavaScript中执行此操作:

App.namespace.Project.all({params},callback_function); 

这太好了。

现在我想使用一些特殊的Rails 3控制器(即像服务一样)。

在我Extdirect JS是这样的:

App.mynamespace.MyProject_Controller_V1_workspaceController.getStatus 

这一反应也涉及到我的ExtJS的路由器。不,我想调用这个控制器动作并获得响应。

我不能使用@app.call(env)具有改变REQUEST_URI因为我在routes.rb中

不匹配是否有可能把这种控制器动作

规格extdirect的:http://tinyurl.com/4y3nc44

感谢skeller1

是的,它是!

只是做这样的事情:

status,headers,response=ProjectsController.action("index").call(@env) 

,所以你可以调用ProjectsController的索引方法。

要小心:ExtDirect接受HTTP_ACCEPT http标头字段中的所有类型。 所以你可以你的要求的动作设置你想要的响应类型之前做

@env['HTTP_ACCEPT'] = "application/json"