如何在to_json中获取回形针图片的url

我有一个使用这样的回形针的模型:

has_attached_file :avatar, :styles => { :large => "100x100>" , :medium => "50x50>", :small => "20x20>" }, :default_url => 'http://img.dovov.commissing-owner_:style.png' 

我用to_json方法导出这个模型,我想导出图像的URL,所以我可以在JavaScript中使用它。

我知道我可以在视图中像这样访问url:

 <%= image_tag model.avatar.url(:medium) %> 

但是我怎样才能在to_json方法中做同样的事情。

我有这样的一些:

 respond_to do |format| render :json => @model.to_json(:only => [:id,:name,:homephone,:cellphone]) end 

我相信最简单的方法来完成这个将是在您的对象中创build一个方法来返回头像的URL。

 class Model < ActiveRecord::Base ... def avatar_url avatar.url(:medium) end ... end 

这将允许您在使用不需要任何参数的简单方法调用to_json时使用methods选项:

 respond_to do |format| render :json => @model.to_json(:only => [:id,:name,:homephone,:cellphone], :methods => [:avatar_url]) end 

哪个应该产生这样的结果:

 {"id" => 1, "name" => "Cool model", "homephone" => 1234567890, "cellphone" => 0987654321, "avatar_url" => "www.coolsite.com/this_avatars_path"} 

请参阅这些参考:

Ruby to_json:方法参数

http://apidock.com/rails/ActiveRecord/Serialization/to_json

显示控制器显示图像json

本地主机:3000 /城市/ 1.json

 respond_to do |format| format.html format.json { render :json => @model.to_json(:methods => [:model_url]) } end