#javascript #jquery #ruby-on-rails #ruby-on-rails-4
#javascript #jquery #ruby-on-rails #ruby-on-rails-4
Вопрос:
Следующее является частью моего кода. фоновые изображения не загружаются.я пробовал такие вещи, как ‘<%= asset_path(«images/bg1.jpg «) %>’ и «images/bg1.jpg «и т.д.Я новичок в rails, кто-нибудь может указать мне правильное направление?
$(".login-bg").backstretch(["bg1.jpg","bg2.jpg","bg3.jpg"],{fade:1e3,duration:8e3})
Ответ №1:
Из демо-версии:
$.backstretch([
"http://dl.dropbox.com/u/515046/www/outside.jpg"
, "http://dl.dropbox.com/u/515046/www/garfield-interior.jpg"
, "http://dl.dropbox.com/u/515046/www/cheers.jpg"
], {duration: 3000, fade: 750});
По-видимому, ваш код не будет работать, потому что все, что вы делаете, это передаете строки. Вместо этого вы хотите передать маршруты, которые обслуживают ваши изображения.
Предполагая, что у вас есть это в файле javascript, вы не сможете использовать свой помощник rails. Что вам нужно было бы сделать в этом случае, так это:
- Создайте контроллер, который обслуживает эти изображения:
ImagesController
- Просто загрузите изображения в онлайн-облако и поместите ссылки внутри массива
В качестве альтернативы, то, что вы должны быть в состоянии сделать, это написать script
внутри представления (html.erb), и вы должны иметь возможность получить доступ к помощнику rails таким образом. Тогда вы смогли бы интерполировать ссылки в виде строки.
ie "[#{image_path('bg1.jpg')}", "#{image_path('bg2.jpg')}"]
Комментарии:
1. у меня есть эти изображения в /assets/images/bg1.jpg и я хочу получить к ним доступ оттуда, а не онлайн
2. Тогда вы либо хотите, чтобы контроллер обслуживал ваши собственные изображения, либо вам нужно, чтобы ваш массив маршрутов включал абсолютные пути
"my_app.com/assets/bg2.jpg"
Ответ №2:
Предоставленный вами код является Javascript, который будет выполняться из браузера пользователя на компьютере пользователя. Таким образом, у него не будет прямого доступа к файлам в images
каталоге на сервере приложений.
Если вы назовете свой файл Javascript something.js.erb
, вы можете встроить в него код Ruby для расширения с помощью конвейера ресурсов, что-то вроде:
$(".login-bg")
.backstretch(
["<%= image_url('bg1.jpg') %>",
"<%= image_url('bg2.jpg') %>",
"<%= image_url('bg3.jpg') %>"
],
{ fade: 1e3, duration: 8e3 }
)
Руководство по конвейеру ресурсов Rails является отличным источником информации о том, как использовать эти функции.