【问题标题】:How to get a controller's response from within another controller?如何从另一个控制器中获取控制器的响应?
【发布时间】:2012-06-08 03:49:01
【问题描述】:

Rails 3.2.5。我有一系列控制器组成我的 Backbone.js 应用程序使用的 JSON API。我现在正在寻找创建一系列控制器,为爬虫/蜘蛛/googlebot 提供静态内容。我想从 JSON API 获得相同的数据,因为它们是针对我已经在我的 Backbone.js 应用程序中使用的车把模板量身定制的,但这次将它们呈现在服务器端。

有没有一种方法可以从我的 API 控制器获取 JSON 响应并从另一个控制器访问它们?。我知道我可以使用curl,但由于 JSON API 对我来说已经是本地的并且在同一个 Rails 应用程序中,有没有更高效和优雅的方法?

【问题讨论】:

  • 那会不会进入应用控制器?
  • 哪个会进入ApplicationController
  • @Tallboy 就算去应用控制器,他是怎么消费的?
  • 您应该使用rest-client 对您自己的rails 应用进行http get 调用

标签: ruby-on-rails ruby-on-rails-3 api backbone.js


【解决方案1】:

不,没有。如果您需要这样的东西,请将 shared 代码放入另一个类中(您可能正在尝试构建一个 service ),然后在两个控制器中使用它,以便您可以轻松共享代码然后生成他们两个的输出中的 JSON。

鉴于您使用 RABL 生成 JSON,您应该转为 the pieces you want to reuse into partials,然后将它们包含在每个特定视图中,就像任何其他 Rails 视图一样。

【讨论】:

  • 我正在使用 RABL 生成 JSON,因此每个 API 控制器操作都有一个 RABL JSON 视图。基本上,我的 JSON API 涉及两层。在这种情况下我将如何重构?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
相关资源
最近更新 更多