Я пытаюсь включить Javascript-файл в мой макет Rails, только если он не был загружен из CDN, например, в чистом Javascript я бы сделал следующее:Rails, условно, включая Javascript, если не загружен?
<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script>
window.Modernizr || document.write('<script src="assets/js/modernizr.2.6.2.min.js"><\/script>');
</script>
Как я могу это сделать, используя конвейер Rails?
Я попытался это,
<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script>
window.Modernizr || document.write('<%= javascript_include_tag "modernizr-2.6.2" %>');
</script>
Но это написано, как,
<script>
window.Modernizr || document.write('<script src="/assets/modernizr-2.6.2.js?body=1"></script>
Который затем каким-то образом попадает в мое тело HTML и листьев, "');"
в моем теле тега. Таким образом, тег не закрыт должным образом.
Кто-нибудь знает, как заставить это работать?
Да, пример не будет работать, поскольку Rails уже обработал шаблон до того, как вы приступите к написанию тега javascript-include в документе. Что произойдет, если вы используете свой оригинальный скрипт (первый пример), делает ли он то, что вам нужно? –
Это скорее жесткий путь к активу, который кажется опасным. –
Хм, да пересматриваю ваш пример вывода - похоже, что он делает что-то странное. То, что вы хотите, это тег ... но закодирован, поэтому обратная косая черта не является реальной косой чертой? вы посмотрели на необработанный html, или вы смотрите на него с помощью firebug (или equiv)? (ваш браузер может «помочь» с интерпретацией здесь ... не то, что он будет работать в любом случае ... но было бы хорошо убедиться, что мы ясно знаем, что появляется из тега javascript rails. есть способ сохранить строку где-то раньше и ускользнуть от нее в этот момент? ... просто спекулировать. –