构建正确的JSON

时间:2014-12-13 23:25:18

标签: ruby-on-rails ruby ruby-on-rails-3 jbuilder

我尝试渲染一个正确格式化的json:

   render json: {photo: @photo.as_json(with_thumbs_url: true)}

在我的模型中,我必须这样做:

  def as_json(options={})
    if options[:with_thumbs_url].present?
      Jbuilder.encode do |json| 
        json.(self, :id, :beschreibung, :date, :art) 
        json.thumbs self.photo_thumbs.map{|e| e.file.url(:medium)}
      end
    end
  end

我的问题是像这样返回:

 {photo: "{"id":288,"beschreibung":"Anfang","date" ...system/photos/6267/medium/136.webp?1413823129"]}"}

我不喜欢这个JSON,Json中的photo呈现为字符串:

        "{"id":288,"beschreibung":"

我希望不对其进行编码,例如:

  {photo: {id: "288", beschreibung: "Anfang" ...

我会说问题是我的代码:encode

   Jbuilder.encode do |json| 

所以为了解决我的问题我尝试了:

   Jbuilder.new do |json|

但后来我收到了错误:

   render json: {photo: @photo.as_json(with_thumbs_url: true)}

   wrong number of arguments (0 for 1..2)

我错了什么以及如何修复我的代码?感谢

1 个答案:

答案 0 :(得分:0)

为了使其工作,我必须将我的代码更改为:

def as_json
  Jbuilder.new do |json|
    # your stuff
  end.attributes!
end