2

根据我的阅读,我可以使用以下代码响应 json 请求:

respond_to do |format|
  format.json { render json: t.response }
end

我的问题是 t.response 已经是 json 格式 - 我认为我的应用程序正在中断,因为 render json: 正在将其重新转换为 json。我该如何避免这种情况,只需返回 t.response。

请注意,如果我只是将 t.response 作为控制器中的最后一行,则会呈现相应的视图 - 这显然不是 json。

谢谢!

编辑:我试图让这个工作,所以我可以通过 tropo 发送短信。如果您以前使用过 tropo,您对如何正确响应 tropo 有什么建议吗?

4

3 回答 3

5

render json:只需将内容类型设置为 application/json (to_json如果对象响应,则调用传递给它的对象to_json)。它不会转换或以某种方式修改您的响应。

http://apidock.com/rails/ActionController/Base/render

于 2012-05-09T20:47:39.087 回答
2

我将向您展示 Rails 如何处理转换为 json 格式。它基本上是在线的:

json = json.to_json(options) unless json.kind_of?(String)

因此,字符串不会被转换,其他对象会通过它们的to_json方法转换为 String。如果您t.response返回一个字符串,则不执行任何转换。

于 2012-05-09T20:58:38.457 回答
1

您可以改为渲染文本

respond_to do |format|
  format.json { render text: t.response }
end
于 2012-05-09T20:33:49.720 回答