2012-01-19 2 views
0

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

Вот строка в моем приложение/просмотров/макеты/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

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

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

или

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

Спасибо, безусловно, решить эту проблему. Я был на том пути, но не совсем понял. Я очень ценю ответ. –

Смежные вопросы