Выпадающее меню Scriptaculous не работает в представлениях/шоу

Мои знания Ruby on Rails и javascript находятся в зачаточном состоянии, поэтому, пожалуйста, простите меня, если на этот вопрос есть простой ответ. У меня есть веб-сайт, которому нужно многоуровневое выпадающее меню. Я адаптировал выпадающее меню scriptalculous, которое работает с тестовой копией моего веб-сайта с использованием mongrel. Есть несколько страниц, каждая со своим макетом. Когда я перехожу со страницы на страницу, выпадающее меню работает нормально, но когда я перехожу на любую страницу «просмотр/показ», работает только меню первого уровня. Я подозреваю, что при переходе на шоу каким-то образом теряется javascript. Кто-нибудь знает, как решить эту проблему. Во всей моей голове макета у меня есть следующее: -

<%= stylesheet_link_tag 'style' %>
<%= javascript_include_tag :defaults %>
<script src="javascripts/prototype.js" type="text/javascript"></script>
<script src="javascripts/scriptaculous.js" type="text/javascript"></script>
<script type='text/javascript' src='javascripts/menu.js'></script>

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


person Don    schedule 29.11.2009    source источник


Ответы (1)


Скорее всего, ваша проблема не связана с фрагментом короткого кода, включенным в ваш вопрос.

Проверяли ли вы с помощью Firebug, правильно ли создается и отправляется меню, включены ли все необходимые файлы, так далее.? (может быть, даже не проблема с javascript)

Есть много других возможностей, но их довольно сложно определить по предоставленному коду.

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

person Jonathan Fingland    schedule 29.11.2009
comment
Спасибо, Джонатан, проблема решена. Следует использовать javascript_include_tag not src =... как неправильный URL-адрес, когда страницы переходят из корневых шаблонов (индекс) в относительную ссылку (индекс для отображения). Rails не может разрешить URL из src =.... Использование javascript_include_tag Rails помещает ссылку во все шаблоны (index, show и т. д.). Если я укажу полный путь в src =...., он должен работать, так как все шаблоны получают правильные URL-адреса от Rails. Это еще надо попробовать. Проще позволить Rails делать ссылки, используя скрипт ..._tag???, proto.., menu; Не использовал ...de_tag:default, который загружает все .js, некоторые из которых не нужны, что замедляет загрузку страницы. - person Don; 03.12.2009
comment
не должно значительно замедлять загрузку, пока файлы кэшируются. Разве что время выполнения скрипта особенно медленное. - person Jonathan Fingland; 03.12.2009