为什么我的回形针图片的网址不起作用?

时间:2014-04-04 17:20:32

标签: ruby-on-rails ruby paperclip

以下是模型中图像的定义方式:

class Image < ActiveRecord::Base
  has_attached_file :image, :url => "/system/images/:product_id/:id/:style/:filename",
                    :styles => { :dashboard => '65x65>',
                                 :thumbnail => '174X174>',
                                 :large => '470' },
                    :default_url => ActionController::Base.helpers.asset_path('/assets/missing_:style.png')
end

当我通过输入以下内容获取图像的网址时:

Image.find(143).image

它返回:

/system/images/:product_id/143/original/logo11w.png?1383743837

问题是:product_id应该返回165而不是:product_id

当我通过输入以下内容获得图像的product_id时:

Image.find(143).product_id

返回165

所以我不确定问题是什么。

1 个答案:

答案 0 :(得分:3)

:product_id被视为纯字符串,未经Paperclip评估,因为它不在Paperclip 提供的插值方法列表中。

Paperclippath选项中查看url提供的所有可用于插值的方法: Module: Paperclip::Interpolations Documentation

现在,为了创建自己的interpolation method,您必须完成Paperclip在其模块中建议的内容:Paperclip :: Interpolations文档:

  

添加你自己的(或覆盖一个   现有的),你可以打开这个模块并定义它,或者调用   Paperclip.interpolates方法。

例如:

class Image < ActiveRecord::Base
  Paperclip.interpolates :product_id do |attachment, style|
    attachment.instance.product_id
  end
  has_attached_file :image, :url => "/system/images/:product_id/:id/:style/:filename",
                    :styles => { :dashboard => '65x65>',
                                 :thumbnail => '174X174>',
                                 :large => '470' },
                    :default_url => ActionController::Base.helpers.asset_path('/assets/missing_:style.png')
end