2015-05-22 5 views
0

Я новичок в Rails, и я столкнулся с проблемой, что мне нужно поместить некоторый Javascript в файл ERB. Например,Rails ERB Содержит Javascript

<script> 
    function init() { 
     .... 
    } 
</script> 

<% @list.each do |l| %> 
    .... 
<% end %> 

В шаблоне, у меня есть еще один сценарий, чтобы проверить, если функция «Init()» это существует, то он будет выполнять после страницы завершения загрузки.

Когда я пытаюсь проверить сервер, init() не может быть выполнен. Я проверил источник страницы из веб-браузера "< скрипт > ... </script >" часть отсутствует. Если я перезагружу страницу, нажмите кнопку перезагрузки в веб-браузере, часть появится снова.

Я пытаюсь что-то изменить, например класс объекта в HTML, он может корректно обновляться после сохранения файла ERB, но только javascript не может быть загружен при первой загрузке страницы и нужно нажать кнопку перезагрузить страницу из браузера.

Я хотел бы знать, что это проблема кеша Rails или чего-то, что я ошибаюсь? В настоящее время я использую Rails 4.2.1 на Mac.

Спасибо!

+0

По причинам отладки: в вашем файле 'application.html.erb' внутри' javascript_include тега' '' data-turbolinks-track'''''''. Затем повторите попытку. – crispychicken

+0

'Мне нужно положить Javascript в файл ERB' - если вам нужно поместить javascript в свои представления, это значит, что что-то еще не так. Итак, стандартный вопрос: зачем вам это нужно? – BroiSatse

+0

Я использую Javascript для инициализации компонентов страницы. Например, я использую Tinymce для некоторых полей Textarea для редактирования. Поэтому для каждой инициализации компонентов мне нужен Javascript на каждой странице. – user2114189

ответ

0

Если вам нужно переносить некоторые переменные из erb в javascript, вы можете использовать скрытые поля или атрибуты специальных тегов на этой странице. Поэтому я уверен, вам действительно не нужно использовать тег скрипта в файле erb, если вам не нужно включать какой-то сторонний javascript.

Я уверен, что ваша проблема возникает из-за того, что вы используете автоматические встроенные турбовинты.

Turbolinks оценит любые теги скриптов на своих страницах, если те теги не имеют типа, или тип - текст/javascript. Все остальные теги скриптов будут проигнорированы.

От: https://github.com/rails/turbolinks

Вы можете удалить их из Gemfile, расслоение и попробовать еще раз, чтобы фальсифицировать мое предположение - или просто включить тип в тэг.

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