gpt4 book ai didi

ruby-on-rails - Ruby on Rails 高级 JSON 序列化

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:12 24 4
gpt4 key购买 nike

我希望在我的 Rails 应用程序中通过 JSON 呈现所有文章的索引以及完整的文章,但我在弄清楚如何去做时遇到了一些麻烦。

现在这是我的 Controller :

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 并使其正确呈现。

最佳答案

您在问题中暗示了解决方案。您很可能希望构建一个散列以呈现为 JSON。现在执行此操作的首选方法是为 as_json 方法提供一个实现。 as_json 通过构建包含您希望编码的数据的散列,提供了一种自定义 to_json 输出的正式方法。

可以在 Jonathan Julian's weblog 上找到关于 as_json 和 to_json 如何交互的更彻底的处理。 .

关于ruby-on-rails - Ruby on Rails 高级 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com