Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails,如果未加载,是否包括Javascript?_Javascript_Ruby On Rails_Ruby On Rails 4_Asset Pipeline - Fatal编程技术网

Rails,如果未加载,是否包括Javascript?

Rails,如果未加载,是否包括Javascript?,javascript,ruby-on-rails,ruby-on-rails-4,asset-pipeline,Javascript,Ruby On Rails,Ruby On Rails 4,Asset Pipeline,我试图在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/

我试图在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>

window.modernizer | | document.write(“”);
我将如何使用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>

window.modernizer | | document.write(“”);
但这是写出来的

<script>
        window.Modernizr || document.write('<script src="/assets/modernizr-2.6.2.js?body=1"></script>

window.modernizer | | document.write('
然后它以某种方式进入我的身体HTML,并在我的身体标签中留下“
”;”
。所以标签没有正确关闭


有人知道如何使其工作吗?

要获得所需的输出,请使用帮助器

要使用您的示例:

<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script>
    window.Modernizr || document.write('<%= j(javascript_include_tag("modernizr-2.6.2")) %>');
</script>

window.modernizer | | document.write(“”);
j()
escape\u javascript()
的别名,看起来更整洁


希望这会有所帮助。

是的,这个示例不会起作用,因为在您开始在文档中编写javascript include标记时,Rails已经完成了对模板的解析。如果您使用原始脚本(第一个示例),会发生什么情况?它是否做了您需要的事情?更重要的是,它是指向资产的硬编码路径,这似乎很危险。嗯,是的,我们正在查看您的输出示例-它看起来确实做了一些奇怪的事情。你想要的是标签。。。但是反斜杠不是真正的斜杠?你看过原始html了吗,还是用firebug(或等价物)看过?(您的浏览器可能“有帮助”有了这里的解释…这两种方式都不起作用…但最好确定我们清楚rails的javascript标记中出现了什么。有没有一种方法可以将字符串存储在以前的某个位置并在此时转义?…只是猜测。还有-也许你可以使用javascript\u include\u标记,而不是使用javascript\ujavascript_路径并创建自己的脚本标记: