Rails,有条件的,包括Javascript(如果未加载)

Rails, conditional including Javascript if not loaded?

本文关键字:如果 加载 Javascript 有条件 包括 Rails      更新时间:2023-09-26

我尝试在我的 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 并离开,"');"在我的身体标签中。因此,标签未正确关闭。

有人知道如何让它工作吗?

要实现所需的输出,请使用escape_javascript助手。

使用您的示例:

<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>

j()escape_javascript()的别名,看起来更整洁。

希望这有帮助。

相关文章: