作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有水印、画廊和照片模型。
画廊 belongs_to
水印
照片belongs_to
画廊
class Photo < ActiveRecord::Base
before_save :save_dimensions, :set_orientation
belongs_to :gallery
has_attached_file :image,
:processors => [:watermark],
:styles => {
:thumbnail => ["80x80>"],
:small => {
:geometry => "200x200>",
:watermark_path => "#{gallery.watermark.image.path(:small)}",
:position => "Center"
},
:medium => {
:geometry => "400x400>",
:watermark_path => "#{gallery.watermark.image.path(:medium)}",
:position => "Center"
},
:large => {
:geometry => "600x600>",
:watermark_path => "#{gallery.watermark.image.path(:large)}",
:position => "Center"
}
},
:path => ":rails_root/public/images/galleries/:gallery_id/:id/:style_:basename.:extension",
:url => "galleries/:gallery_id/:id/:style_:basename.:extension"
validates_attachment_presence :image
validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png']
attr_protected :image_file_name, :image_content_type, :image_file_size
end
undefined local variable or method 'gallery'
.如果我像这样尝试
:gallery_watermark_path
使用 Paperclip.interpolations 定义它会默默地失败。
:watermark_path => ":gallery_watermark_path"
:gallery_watermark_path
不会被 Paperclip.interpolations 处理:
[paperclip] identify -format %wx%h '/tmp/stream20110620-30644-1j6i9in.jpg[0]' 2>/dev/null
[paperclip] convert '/tmp/stream20110620-30644-1j6i9in.jpg' '-resize' '80x80>' '-auto-orient' '/tmp/stream20110620-30644-1j6i9in20110620-30644-1mcqvox' 2>/dev/null
[paperclip] identify -format %wx%h '/tmp/stream20110620-30644-1j6i9in.jpg[0]' 2>/dev/null
[paperclip] convert '/tmp/stream20110620-30644-1j6i9in.jpg' '-resize' '200x200>' '-auto-orient' '/tmp/stream20110620-30644-1j6i9in20110620-30644-60zlb' 2>/dev/null
[paperclip] composite '-gravity' 'Center' ':gallery_watermark_path' '/tmp/stream20110620-30644-1j6i9in20110620-30644-60zlb' '/tmp/stream20110620-30644-1j6i9in20110620-30644-60zlb' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the watermark for stream20110620-30644-1j6i9in>
[paperclip] identify -format %wx%h '/tmp/stream20110620-30644-1j6i9in.jpg[0]' 2>/dev/null
[paperclip] convert '/tmp/stream20110620-30644-1j6i9in.jpg' '-resize' '400x400>' '-auto-orient' '/tmp/stream20110620-30644-1j6i9in20110620-30644-1ronidq' 2>/dev/null
[paperclip] identify -format %wx%h '/tmp/stream20110620-30644-1j6i9in.jpg[0]' 2>/dev/null
[paperclip] convert '/tmp/stream20110620-30644-1j6i9in.jpg' '-resize' '600x600>' '-auto-orient' '/tmp/stream20110620-30644-1j6i9in20110620-30644-1ikfy72' 2>/dev/null
最佳答案
您可以对样式使用 proc:
has_attached_file :image,
:processors => [:watermark],
:styles => proc { |attachment|
{
:thumbnail => ["80x80>"],
:small => {
:geometry => "200x200>",
:watermark_path => attachment.instance.gallery.watermark.image.path(:small),
:position => "Center"
},
:medium => {
:geometry => "400x400>",
:watermark_path => attachment.instance.gallery.watermark.image.path(:medium),
:position => "Center"
},
:large => {
:geometry => "600x600>",
:watermark_path => attachment.instance.gallery.watermark.image.path(:large),
:position => "Center"
}
}
},
[...]
gallery
可能是
nil
因为您可能在
image
之前分配了
gallery_id
)。
关于ruby-on-rails - 如何将可变水印路径传递给回形针水印处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414786/
我是一名优秀的程序员,十分优秀!