2009-12-15 3 views
1

Я использую Paperclip для загрузки изображения в мою модель проекта, и я хочу иметь массив изображений по умолчанию (не в зависимости от стиля, но разных изображений), это возможно? Чтобы передать массив вместо одного URL-адреса в параметр: default_url?Несколько Paperclip default_urls

Спасибо вам,

NicoLas HOCK Исаса

ответ

4

Так близко: Если вы хотите, чтобы изображения, чтобы изменить случайным образом, а не только при первой загрузке модели:

:default_url => lambda { "path/to/images/#{rand(5)}.jpg" } 
0

Нет идеи, если это будет работать, но это стоит попробовать. Поместите изображения 0.png, 1.png, 2.png, 3.png, 4.png на диске, а затем в модели:

has_attached_file :image, 
    lambda {{ 
    :default_url => "path/to/images/#{rand(5)}.png" 
    }} 

Положите другие варианты в лямбда-а.

+0

Я попытался выполнить эту работу, но получил «неожиданный» \ n ', ожидающий tASSOC'. Не знаете, где синтаксическая ошибка. – jaacob

+0

На какой строке вы получаете сообщение об ошибке? – Ben

1

Ну, я не использовал лямбда-функцию, но я получил эту мысль от ответа Бена. Я просто файлы (0.jgp, 1.jpg ...) и тогда я могу просто

: = умолчанию ресурса> "путь/к/изображения/# {рандов (5)} JPG."

Без лямбда ;-)

спасибо!

+1

Являются ли изображения случайным переключением? Я ожидал бы, что значение rand() будет интерпретировано только при первой загрузке модели. Попробуйте запустить его на производстве и посмотреть, переключается ли изображение. – Ben

+0

Они не переключаются случайным образом, только в первый раз, когда модель загружается так, как вы ожидали. – jaacob

+0

Они будут определенно переключаться случайным образом каждый раз, когда загружается новая модель, например, каждая загрузка страницы. – tee

3

Ввод рандов (5) в умолчанию ресурса прок задаст случайное изображение каждый раз, создается новый объект модели.

Если вы хотите изображения должны быть случайным образом распределены, и что каждый проект должен держать их назначенное изображение, вы можете сделать это:

has_attached_file :something, 
    :default_url => lambda { |av| "/images/img_#{av.instance.default_image_number}.png" } 

def default_image_number 
    id.to_s.last 
end 

Этого пример позволяет иметь 10 несколько случайных изображений по умолчанию, которые остаются неизменными для каждой записи:

# img_0.png, img_1.png, etc.