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

时间:2011-09-05 16:58:22

标签: ruby-on-rails extjs controller middleware

我想在Rails 3中使用ExtDirect作为第三方extjs用户界面。所以我已经开始更新active-direct gem以使用Rails 3.这是更新版本:https://github.com/stonegao/active-direct

目前我的修改后的主动直接插件/ gem与模型配合使用。我可以在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

1 个答案:

答案 0 :(得分:0)

是的,它是!

做这样的事情:

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

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

注意:ExtDirect接受HTTP_ACCEPT http标头字段中的所有类型。 所以你可以做一个

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

在您提出要求设置所需回复类型的操作之前