如何在Rails 3中将哈希渲染为JSON

时间:2010-08-13 15:21:47

标签: ruby-on-rails json api ruby-on-rails-3

我找到了如何在Rails 3中渲染ActiveRecord对象,但是我无法弄清楚如何渲染任何自定义对象。我正在写一个没有ActiveRecord的应用程序。我尝试过这样的事情:

class AppController < ApplicationController
  respond_to :json

  ...
  def start
    app.start
    format.json { render :json => {'ok'=>true} }
  end
end

5 个答案:

答案 0 :(得分:7)

当您指定respond_to时,在您的操作中,您将匹配respond_with

class AppControlls < ApplicationController
  respond_to :json

  def index
    hash = { :ok => true }
    respond_with(hash)
  end
end

您似乎将旧的respond_to do |format|样式块与新的respond_torespond_with语法混为一谈。 This edgerails.info post很好地解释了。

答案 1 :(得分:1)

class AppController < ApplicationController

respond_to :json

def index
  hash = { :ok => true }
  respond_with(hash.as_json)
end

end

你永远不应该使用to_json来创建表示,只能使用表示。

答案 2 :(得分:0)

这非常接近。但是,它不会自动将哈希值转换为json。这是最终的结果:

class AppControlls < ApplicationController
  respond_to :json

  def start
    app.start
    respond_with( { :ok => true }.to_json )
  end
end

感谢您的帮助。

答案 3 :(得分:0)

format.json { render json: { ok: true } }应该有效

答案 4 :(得分:0)

对于那些得到NoM​​ethodError的人,试试这个:

class AppController < ApplicationController
  respond_to :json

  ...
  def start
    app.start
    render json: { :ok => true }
  end
end