将纸夹网址添加到json

时间:2012-03-10 23:02:24

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

通常在html中我们将在image标签中使用Model.field.url(:thumb),如何在json上使用它,特别是使用hash_secret。

2 个答案:

答案 0 :(得分:6)

如果这对任何人都有帮助,我会找到一个很好的方法来做到这一点:

class MyModel < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :large => "500x500#", :medium => "300x300#", :small => "100x100#", :thumb => "50x50#" }

  def as_json(options)
    json = super
    self.avatar.styles.each do | format |
      json = json.merge({"avatar_"+format[0].to_s => self.avatar(format[0])})
    end
    json
  end
end

然后您可以直接致电

render :json => @my_model

在渲染集合时也可以使用。

然后可以使用as_json(options)进行一些条件渲染,例如:

model_to_json = @my_model.to_json(:nested => true)
render :json => model_json  

答案 1 :(得分:2)

在你的模型中添加以下内容以获取url(我相信这也适用于散列):

def photo_url_thumb
    photo.url(:thumb)
end 

然后你可以像这样输出json:

 format.json { render :json => @model.photo_url_thumb }