Слайд-шоу Galleria работает на локальном сервере, а не на живом сервере

Я пытаюсь запустить слайд-шоу Galleria в своем приложении rails. Он отлично работает с локальным сервером (как в Chrome, так и в Firefox), но не работает на реальном сервере (в Chrome или Firefox). В Chrome слайд-шоу ненадолго мигает (может быть, 0,25 секунды?) при загрузке, прежде чем исчезнуть. В Firefox он вообще никогда не отображается. Когда я смотрю, что происходит с элементом проверки в Chrome, на вкладке сети говорится, что galleria.classic.css был отменен из-за ошибки 404.

У меня есть следующий код в моем приложении: (обратите внимание, изначально у меня был другой код на странице, но я вытащил слайд-шоу на страницу только для администратора, чтобы я мог изучить его вживую, не испортив материал, обращенный к клиенту, так что это все это на странице Это не работало ни на клиентской странице, ни на странице администратора.

В представлении:

<head><link rel="stylesheet" type="text/css" href="assets/libs/galleria/themes/classic/galleria.classic.css"></head>
<body>
  <div id="slideshow">
    <div id="galleria">
        <%= image_tag("pic1_url")%>
        <%= image_tag("pic2_url")%>
        <%= image_tag("pic3_url")%>
    </div>
    <script>
        $('#galleria').galleria();
    </script>
  </div>
</body> 

В моей таблице стилей application.css у меня есть:

 *= require_self
 *= require galleria/themes/classic/galleria.classic
 *= require_tree .
 */

В моем файле application.js у меня есть:

//= require jquery
//= require jquery_ujs
//= require jquery_nested_form
//= require galleria/galleria-1.2.9.min
//= require galleria/themes/classic/galleria.classic
//= require_tree .

Исправления, которые я пробовал:

Как я могу заставить Galleria работать?


person ctaymor    schedule 10.07.2013    source источник


Ответы (1)


Когда вы развертываете свой файл в рабочей среде, он компилирует и собирает все ваши активы в одну папку с именем assets, поэтому указанные пути не работают, потому что на сервере Heroku или другом сервере, который вы используете, нет пути galleria/themes/classic/.

Итак, вам нужно указать путь в файле HTML, например, href="assets/galleria.classic.css", если это необходимо.

Но на самом деле ваш

*= require galleria/themes/classic/galleria.classic

и

//= require galleria/galleria-1.2.9.min
//= require galleria/themes/classic/galleria.classic

уже сделал это, и весь необходимый код должен быть в ваших скомпилированных файлах .css и .js. Итак, вы можете просто удалить часть <link rel...> из своего кода.

P.S. Я стараюсь избегать подпапок в папках css, javascripts и images, потому что это может часто вызывать такие проблемы, как у вас, а также делает структуру приложения более понятной. Но для этого нужно проверить файлы плагинов, если в них есть какие-либо заданные пути друг к другу, и удалить любую /folder/subfolder/ часть из них, оставив только имена файлов.

person Peter Tretyakov    schedule 10.07.2013
comment
То есть мне нужно указать путь для локального сервера, а не указать путь в рабочей версии? Это не имеет особого смысла. Я тоже не уверен, как это сделать. - person ctaymor; 11.07.2013
comment
Вам действительно нужно жестко закодировать <link rel="stylesheet" type="text/css" href="assets/libs/galleria/themes/classic/galleria.classic.css"> в вашем html-файле? Если вы добавили его в свои файлы application, они уже скомпилированы в процессе разработки и производства. Также убедитесь, что config.assets.initialize_on_precompile равно false, если вы используете heroku. - person Peter Tretyakov; 11.07.2013
comment
Спасибо. Клиент просто отказался от слайд-шоу вообще из эстетических соображений, они решили, что вместо этого они хотят, чтобы лайтбокс всплывал, когда люди нажимают на изображения. Я все еще многое узнаю о конвейере. В следующий раз я буду знать, что мне не нужно добавлять таблицу стилей вверху и через конвейер ресурсов. Спасибо. - person ctaymor; 11.07.2013
comment
Без проблем. Рад, если мои советы оказались полезными (: - person Peter Tretyakov; 11.07.2013