Добавьте URL скрепки в JSON - PullRequest
0 голосов
/ 11 марта 2012

Обычно в html мы будем использовать Model.field.url (: thumb) внутри тега изображения, Как это сделать на json, особенно с hash_secret.

Ответы [ 2 ]

6 голосов
/ 12 февраля 2014

В случае, если это кому-нибудь пригодится, я найду хороший способ сделать это:

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  
2 голосов
/ 11 марта 2012

В вашей модели добавьте следующее, чтобы получить URL (я думаю, это также работает с хэшированием):

def photo_url_thumb
    photo.url(:thumb)
end 

И тогда вы можете вывести json следующим образом:

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