скрепка + граватар - PullRequest
       20

скрепка + граватар

1 голос
/ 23 октября 2009

Я нашел этот урок (http://www.coffeepowered.net/2009/02/15/graceful-degredation-using-gravatar-as-a-fallback-avatar-with-paperclip/) о внедрении gravatar в качестве изображения по умолчанию для модели с поддержкой paperclip, но при реализации я вижу сообщение "неопределенный метод` match 'для [: format,: png]: Array ". Что не так в этой статье?

Ответы [ 4 ]

2 голосов
/ 31 декабря 2009

Примечание. При попытке найти решение я получил следующую ошибку:

NoMethodError: undefined method `first' for #<Hash:0xb6476178>
    from /home/bob/dev/Firehoze/app/models/user.rb:114:in `gravatar_url'

Я решил это, заменив строку:

size_data = attachment.styles[style].first

с

size_data = attachment.styles[style][:geometry]
2 голосов
/ 23 октября 2009

Я обновил код, чтобы вам было легче понимать и отлаживать.

Paperclip.interpolates(:gravatar_url) do |attachment, style|
  size = nil
  # style should be :tiny, :small, or :regular
  # size_data is assumed to be "16x16#", "20x20#", or "25x25#", i.e., a string
  size_data = attachment.styles[style][:geometry]
  if size_data
    # get the width of the attachment in pixels
    if thumb_size = size_data.match(/\d+/).to_a.first
      size = thumb_size.to_i
    end
  end
  # obtain the url from the model
  # replace nil with "identicon", "monsterid", or "wavatar" as desired
  # personally I would reorder the parameters so that size is first
  # and default is second
  attachment.instance.gravatar_url(nil, size)
end
1 голос
/ 28 декабря 2013
Paperclip.interpolates :gravatar_url do |attachment, style|
    attachment.instance.gravatar_url(attachment.styles[style][:geometry].split('x').first)
end
0 голосов
/ 23 октября 2009

Если у вас по-прежнему возникают проблемы, вы можете попробовать гем Avatar , который поддерживает цепочку различных методов аватара, включая Paperclip и Gravatar.

NB: это что-то вроде бесстыдного штекера, так как я это написал.

...