当前位置:  开发笔记 > 后端 > 正文

Ruby on Rails高级JSON序列化

如何解决《RubyonRails高级JSON序列化》经验,为你挑选了1个好方法。

我想在我的rails应用程序中通过JSON呈现所有文章的索引以及完整的文章,但是我在弄清楚如何做到这一点时遇到了一些麻烦.

这是我的控制器:

if params[:id]
    @article = Article.find(params[:id])
else
    @article = Article.published.not_draft.by_recent.first
end

respond_to do |format|

format.js { render :json => @article.to_json(
:except => [ :created_at, :updated_at, :draft, :id, :publish ], 
:include => {
    :comments => {
        :only => [:body]
    }
}),
:callback => params[:callback]}
end

我想在响应中做的是添加所有文章的索引,如下所示:

@index = Article.find(:all, :select => 'id, title')

我能够做到的唯一方法是将索引和文章放入哈希或数组中,然后将其放入JSON中.

@response = { :item => @article, :index => @index }

两者的完整代码:

@index = Article.find(:all, :select => 'id, title')

if params[:id]
    @article = Article.find(params[:id])
else
    @article = Article.published.not_draft.by_recent.first
end

@response = { :item => @article, :index => @index }

respond_to do |format|

format.js { render :json => @response.to_json(), :callback => params[:callback]}

end

这没关系,除非现在我无法指定:include:except让它正确渲染.



1> nirvdrum..:

你暗示问题中的解决方案.您很可能希望构建一个哈希来呈现给JSON.现在这样做的首选方法是为as_json方法提供一个实现.as_json提供了一种通过构建包含要编码的数据的哈希来自定义to_json输出的正式方法.

有关as_json和to_json如何交互的更全面的处理可以在Jonathan Julian的博客上找到.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有