我有一个使用回形针的模型如下:

has_attached_file :avatar, :styles => { :large => "100x100>" , :medium => "50x50>", :small => "20x20>" },  :default_url => '/images/missing-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

推荐答案

我相信对你来说,最简单的方法就是在你的对象中创建一个返回化身URL的方法.

class Model < ActiveRecord::Base
    ...

    def avatar_url
        avatar.url(:medium)
    end

    ...
end

这将允许您在使用不需要任何参数的简单方法调用_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 :methods arguments

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

Ruby-on-rails相关问答推荐

Ruby on rails Admin-有没有一种方法可以在成对的管理控制器类中合并、重用应用程序控制器类?

Ubuntu Webhooks无法读取安装的正确RVM Ruby

Data-turbo-stream=&FALSE&QOOT;不适用于带有方法POST的表单

Rails 7 - 富文本不显示附加的媒体内容

如何使用 activerecord activerecord-session_store 在 Rails 应用程序中使用 cookie 值在数据库中查找会话记录

如何创建一个融合了另外两个记录的 FactoryBot 工厂?

如何在 Arel 中重用单个绑定变量?

Rails 100% 新手问题 - send() 方法

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

如何在两个日期之间生成随机日期和时间?

从 Rails 生成 PDF

没有要加载的文件 - readline

在 Epoch 中将 Ruby 时间戳转换为秒数并返回

对象不支持此属性或方法 Rails Windows 64bit

Rails 3.0 中的 f.error_messages

Rails HABTM - 正确删除关联

Rails 3:乘客找不到Bundle 程序安装的 git gem

使用redirect_to后如何停止控制器执行? (使用导轨)

Ruby on Rails Bootstrap Glyphicons 不工作

.erb 、 .rhtml 和 .html.erb 有什么区别?