我希望有一个通过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
答案 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