0

我正在寻找在我的控制器中调用“显示”操作时返回 json 的最佳方法。我正在使用 Rails 2.3.x。

有些东西我想添加,有些我想在返回之前从对象中删除,所以只需执行以下操作之一:

respond_to do |format|
  format.json {
    render :json => @object.to_json
  }
end

不一定会奏效。我不希望该对象中的所有内容都暴露出来。我在想我在这里有两个意见:

  1. 在控制器中创建一个私有辅助方法,该方法构建一个仅包含我想要的新对象,然后将其发送。这里的问题是我有一些视图辅助方法,我无法使用这种方法。
  2. 在 show.json.erb 视图中手动写出 json。这里的问题是,我似乎违背了规律,必须投入大量逻辑来解释尾随逗号之类的问题。

如果这是我返回的 HTML,我显然只会使用 .html.erb 文件,并且只包含我想要的内容。但是由于我正在处理 JSON,所以我似乎应该处理代码中的几乎所有内容,甚至不处理视图文件。

想法?

4

1 回答 1

2

你应该看看 RABL (https://github.com/nesquena/rabl)。然后你可以像这样构建你的 show.json.rabl 文件:

object @person
attributes :id, :name, :age

在 RABL 上查看 RailsCast:http ://railscasts.com/episodes/322-rabl

还可以查看https://github.com/rails/jbuilder - 和 RailsCast:http: //railscasts.com/episodes/320-jbuilder

于 2012-05-21T17:55:26.187 回答