【发布时间】:2013-11-06 22:43:02
【问题描述】:
我试图在我的 Rails 布局中包含一个 Javascript 文件,前提是它没有从 CDN 加载,例如在纯 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 并离开,"');" 在我的正文标记中。所以标签没有正确关闭。
有人知道如何让它工作吗?
【问题讨论】:
-
是的,这个例子不起作用,因为当你在文档中编写 javascript-include-tag 时,Rails 已经完成了模板的解析。如果您使用您的原始脚本(第一个示例)会发生什么情况,它是否可以满足您的需求?
-
更多的是它是一个资产的硬编码路径,这看起来很危险。
-
嗯,是的,重新查看您的输出示例 - 它看起来确实在做一些奇怪的事情。你想要的是标签......但编码所以反斜杠不是真正的斜杠?你看过原始的html,还是用firebug(或equiv)看它? (您的浏览器可能在这里“帮助”解释......并不是说它会以任何一种方式工作......但最好确定我们清楚什么是从rails的javascript标签中弹出的。是有没有办法将字符串存储在以前的某个地方并在此时将其转义?...只是推测。
-
也 - 也许您可以使用 javascript_path 并制作自己的脚本标签,而不是使用 javascript_include_tag:apidock.com/rails/v3.0.9/ActionView/Helpers/AssetTagHelper/…
标签: javascript ruby-on-rails ruby-on-rails-4 asset-pipeline