Rails 3 Отображение массива файлов в публичном каталоге - PullRequest
0 голосов
/ 19 января 2012

У меня есть вращающееся изображение в качестве баннера на моей веб-странице, которое проходит через каталог и возвращает случайное изображение из каталога ./public/images/banner.Эта строка кода работала, когда я запускал свое приложение на Passenger, но не работала при попытке переключиться на FastCGI.

Вот строка в моем app / views / layouts / application.html.erb, которая вызывает проблему:

<img id="header-picture" src=<%= "/images/banner/" + Dir["./public/images/banner/*.png"].map { |file| File.basename(file) }.shuffle.first %>>

Я получаю сообщение об ошибке:

ActionView::Template::Error (can't convert nil into String)

Если изменить его на что-то вроде:

<img id="header-picture" src="/images/banner/example.png">

Сайт работает правильно.

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

1 Ответ

1 голос
/ 19 января 2012

Когда вы делаете Dir["./public...."], он ищет этот путь относительно текущего запускаемого сценария ruby.Возможно, ваша текущая настройка сервера заканчивается в другом рабочем каталоге.Безопаснее всегда заставлять его искать относительно корня вашего приложения.Так что замените Dir["./public/images/banner/*.png"].map на что-то вроде этого:

Dir["#{Rails.root}/public/images/banner/*.png")].map

или

Dir[File.join(Rails.root, "public", "images", "banner", "*.png")].map
...