如何在不使用render:json的情况下在Rails中返回json对象

时间:2012-05-09 20:29:18

标签: ruby-on-rails json

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

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

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

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

谢谢!

编辑:我正在尝试让这个工作,所以我可以通过tropo发送短信。如果您之前使用过tropo,您对如何正确回复tropo有任何建议吗?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

您可以改为渲染文字

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