如何从Ruby on Rails输出JSON?

时间:2011-06-19 20:30:35

标签: ruby-on-rails json

我希望有一个通过AJAX创建/更新的模型。你是如何在Ruby on Rails中做到这一点的?

另外,更具体地说:如何在RoR中输出JSON?

def create
  response = {:success => false}
  @source = Source.new(params[:source])
  if @source.save
    response.success = true
  end
  render :json => response.to_json
end

3 个答案:

答案 0 :(得分:8)

您需要做的就是使用对象调用render:json,如下所示:

render :json => my_object

对于大多数对象,这只会起作用。如果它是一个ActiveRecord对象,请务必查看as_json以了解其工作原理。对于上面说明的情况,您的哈希将转换为json并返回。

但是,您确实有错误:您无法通过response.success访问成功密钥 - 您应该做出响应[:success]

答案 1 :(得分:3)

jimothy的解决方案非常好,但我认为从长远来看它不具备可扩展性。 Rails旨在成为模型,视图和控制器框架。现在,JSON被默认导轨中的视图所欺骗。然而,有一个名为RABL的伟大项目允许JSON视图。我已经写了一些论据,为什么我认为这是一个很好的选择,以及如何快速启动和运行它。看看这对你有用:http://blog.dcxn.com/2011/06/22/rails-json-templates-through-rabl/

答案 2 :(得分:0)

@source = Source.new(params[:source])

respond_to do | f |
  f.html {
    # do stuff to populate your html view
    # maybe nothing at all because @source is set
  }

  f.any(:xml, :json) { 
    render request.format.to_sym => @source 
  }
end