Rails:从控制器返回自定义JSON的最佳方法?

时间:2012-05-21 17:34:53

标签: ruby-on-rails json

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

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

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

不一定有效。我不希望暴露该对象中的所有内容。我以为我在这里有两个操作:

  1. 在控制器中创建一个私有帮助器方法,该方法仅使用我想要的内容构建一个新对象,然后发送它。这里的问题是我有一些帮助方法,我无法用这种方法。
  2. 在show.json.erb视图中手动写出json。这里的问题似乎是我反对这个问题,并且必须投入大量的逻辑来解释尾随的逗号和诸如此类的东西。
  3. 如果这是我正在返回的HTML,我显然只会使用.html.erb文件,并且只包含我想要的内容。但是因为我正在处理JSON,所以我似乎应该处理代码中的所有内容,甚至不处理视图文件。

    思想?

1 个答案:

答案 0 :(得分: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