J'ai un modèle qui utilise Paperclip comme ceci:
has_attached_file :avatar, :styles => { :large => "100x100>" , :medium => "50x50>", :small => "20x20>" }, :default_url => '/images/missing-owner_:style.png'
J'exporte ce modèle avec la méthode to_json et je veux exporter l'url de l'image pour pouvoir l'utiliser en javascript.
Je sais que je peux accéder à l'URL comme ceci dans la vue:
<%= image_tag model.avatar.url(:medium) %>
Mais comment puis-je faire de même dans la méthode to_json.
J'en ai comme ça:
respond_to do |format|
render :json => @model.to_json(:only => [:id,:name,:homephone,:cellphone])
end
Je crois que le moyen le plus simple pour vous d'accomplir cela sera de créer une méthode dans votre objet pour renvoyer l'URL de l'avatar.
class Model < ActiveRecord::Base
...
def avatar_url
avatar.url(:medium)
end
...
end
Cela vous permettra ensuite d'utiliser l'option méthodes lors de l'appel à to_json avec une méthode simple qui ne nécessite aucun paramètre:
respond_to do |format|
render :json => @model.to_json(:only => [:id,:name,:homephone,:cellphone], :methods => [:avatar_url])
end
Ce qui devrait vous donner une sortie dans ce sens:
{"id" => 1, "name" => "Cool model", "homephone" => 1234567890, "cellphone" => 0987654321, "avatar_url" => "www.coolsite.com/this_avatars_path"}
Voir ceux-ci pour référence:
show controller pour afficher l'image json
localhost: 3000/villes/1.json
respond_to do |format|
format.html
format.json { render :json => @model.to_json(:methods => [:model_url]) }
end