Путь / URL скрепки, используя значения объекта - PullRequest
5 голосов
/ 11 декабря 2010

Я играл с использованием Paperclip для создания фотогалереи / магазина.Галерея имеет много фотографий, и фотография принадлежит галерее, и пользователи могут иметь много галерей.По умолчанию скрепка делает что-то вроде /:class/:style/:basename.:extension.Однако при настройке галереи я бы предпочел что-то вроде /:class/:user_name/:gallery_name/:styles/:basename.:extension.Я еще не нашел способ доступа к переменным в объекте для динамического создания этих хранилищ.

Есть ли способ сделать это?

Я пытался использовать # {переменная} в пути, но это не работает.Эти фотообъекты создаются с использованием @ gallery.photos.build, поэтому для gallery_id должно быть доступно значение.

Ответы [ 2 ]

8 голосов
/ 11 декабря 2010

Ознакомьтесь с разделом Советы и обновления на Thoughtbot.com. В нем обсуждается, как добавить свои собственные интерполированные переменные в путь / URL.

4 голосов
/ 25 мая 2015

@ Zetetic ответ немного устарел (сообщение в блоге от 2008 года) Текущий (2015) способ создания пользовательских интерполяций описан в paperclip wiki . Так что для user_name в вопросе, вероятно, что-то вроде этого:

# interpolate in paperclip
Paperclip.interpolates :user_name  do |attachment, style|
  attachment.instance.gallery.user.name
end
...