ruby-on-rails – 在Paperclip中动态使用:default_url

我正在尝试配置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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...