2011-06-19 57 views
2

我期待有一个通过AJAX创建/更新的模型。你如何在Ruby on Rails中做到这一点?如何从Ruby on Rails输出JSON?

此外,更具体地说:您如何在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 

回答

6
所有你需要做的就是调用渲染

:JSON与对象,像这样:

render :json => my_object 

对于大多数对象,这只是工作。如果它是一个ActiveRecord对象,请确保查看as_json以查看它是如何工作的。对于上面说明的情况,您的散列将被转换为json并返回。

但是,你有一个错误:你不能访问通过response.success成功的关键 - 你应该做的,而不是响应[:成功]

2

jimothy的解决方案是真正的好布提相信它不是在可扩展性长远来看。 Rails是一个模型,视图和控制器框架。现在,JSON在默认导轨中被视为出了问题。然而,有一个叫做RABL的好项目允许JSON视图。我写了一些论点,为什么我认为这是一个很好的选择,以及如何快速启动并运行它。看看这对你有用:http://blog.dcxn.com/2011/06/22/rails-json-templates-through-rabl/

+1

+1在RABL上。我一直在使用它在我的第一个真正的RoR项目(一个API服务)上,它工作得很好。目前唯一的问题是使用序列化日期时间对象,并且在RABL github读取文件中添加了解决方法。 –

+0

是啊!这对于可缩放应用程序来说更有意义。 –

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