ruby-on-rails – 在Paperclip中动态使用:default_url
发布时间:2020-12-16 22:21:33 所属栏目:百科 来源:网络整理
导读:我正在尝试配置Paperclip以根据实例的category属性提供不同的丢失图像.对象的每个类别都有自己缺少的图像. 这是我第一次服用 编辑添加完整型号: class Service ActiveRecord::Base attr_accessible :logo,:logo_file_name,:logo_content_type,:logo_file_si
我正在尝试配置Paperclip以根据实例的category属性提供不同的丢失图像.对象的每个类别都有自己缺少的图像.
这是我第一次服用 编辑添加完整型号: class Service < ActiveRecord::Base attr_accessible :logo,:logo_file_name,:logo_content_type,:logo_file_size,:logo_updated_at belongs_to :category,:counter_cache => true has_attached_file :logo,:path => "/:id-:style-:filename",:url => ":s3_eu_url",:default_url => "/logos/:style/#{self.category.name]}.png",:styles => { :large => "600x400>",:medium => "300x200>",:small => "100x75>",:thumb => "60x42>" } end class Category < ActiveRecord::Base attr_accessible nil has_many :services end 在我看来,image_tag service.logo.url(:thumb)输出: undefined method `category' for #<Class:0x0000010a731620> 有任何想法吗? EDIT2: 一个工作的default_url是:default_url => “/logos/:style/missing.png” 解: 请看下面我自己的答案. 解决方法
我找到了一个解决方案,跟随
this gist和另外
question in stackoverflow.
我的工作解决方案: Class Service has_attached_file :logo,:default_url => :set_default_url_on_category,:thumb => "60x42>" } private def set_default_url_on_category "/logos/:style/#{category.name}.png" end end 还有一个初始化函数paperclip_default_url_fix.rb module Paperclip module Interpolations def self.interpolate(pattern,*args) pattern = args.first.instance.send(pattern) if pattern.kind_of? Symbol all.reverse.inject(pattern.dup) do |result,tag| result.gsub(/:#{tag}/) do |match| send(tag,*args) end end end end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |