我一直在玩Paperclip来建立照片库/商店。图库有很多照片,照片属于图库,用户可以有很多图库。回形针默认值类似于/:class/:style/:basename.:extension。但是,通过图库设置,我更喜欢像/:class/:user_name/:gallery_name/:styles/:basename.:extension。我还没有找到一种方法来访问对象中的变量,以便动态创建这些存储位置。
有没有办法做到这一点?
我尝试在路径中使用#{variable},但这不起作用。这些照片对象是使用@ gallery.photos.build创建的,因此gallery_id应该已经具有可访问的值。
答案 0 :(得分:8)
查看Thoughtbot.com上的tips and updates部分。它讨论了如何将自己的插值变量添加到路径/ URL中。
答案 1 :(得分:4)
@ zetetic的回答有点过时(博客文章是2008年)当前(2015)创建自定义插值的方法在paperclip wiki中有描述。所以对于问题中的user_name
,可能是这样的:
# interpolate in paperclip
Paperclip.interpolates :user_name do |attachment, style|
attachment.instance.gallery.user.name
end