【问题标题】:Use Rails asset helper to run a Javascript plug in使用 Rails 资产助手运行 Javascript 插件
【发布时间】:2014-02-16 08:26:59
【问题描述】:

处理一个有趣的问题。我正在使用第三方插件,Galleria。它像这样从视图主体运行

<script>
Galleria.loadTheme('/assets/galleria/themes/classic/galleria.classic.min.js');
Galleria.run('.galleria'...
</script>

我已经意识到,使用 Rails 资产管道,我必须使用帮助标签,否则资产不会加载。因此,我将第一行替换为这样:

Galleria.loadTheme("<%= javascript_include_tag 'galleria.classic.min.js', '/galleria/themes/classic' %>");

但我不确定如何处理 Galleria.run('.galleria' 部分,因为这不是资产,所以它告诉它运行它应该加载的东西。让它保持原样没有用,所以想看看有没有其他的想法。

编辑: 最终起作用的是其他人的这篇可爱的帖子,+一些我必须添加到自己身上的内容: How to use Galleria plugin with Rails 4 Pipeline

【问题讨论】:

标签: javascript ruby-on-rails asset-pipeline


【解决方案1】:

我想你想要

Galleria.loadTheme("<%= javascript_include_tag '/galleria/themes/classicgalleria.classic.min.js'%>")

假设您已将 js 放入 assets/javascripts 中?

【讨论】:

【解决方案2】:

您可能需要在资产路径中添加一些内容以进行编译。我认为您不能直接在线执行javascript_include_tag。这应该会生成一个完整的&lt;script&gt;&lt;/script&gt; 标签。你真正想要的只是资产编译的文件名。如果您已将 javascript 文件放在 vendor/assets/javascripts 中,则将它们添加到预编译列表中

# in environments/production.rb
config.assets.precompile += %w( galleria.classic.min.js )

那么我认为您可以像这样包含它:

Galleria.loadTheme('/assets/galleria.classic.min.js');

如果非摘要版本不可用,您可能需要使用不同的路径助手来获取摘要版本。我应该看起来像:

Galleria.loadTheme('<%= asset_path 'galleria.classic.min.js' %>');

祝你好运。 Galleria 是一个不错的幻灯片。

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-11-13
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多