以下是模型中图像的定义方式:
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
所以我不确定问题是什么。
答案 0 :(得分:3)
:product_id
被视为纯字符串,未经Paperclip
评估,因为它不在Paperclip
提供的插值方法列表中。
在Paperclip
和path
选项中查看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