可以在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"
。