使用Rails资产助手运行Javascript插件

时间:2014-02-16 08:27:00

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

处理一个有趣的问题。我正在使用第三方插件,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

2 个答案:

答案 0 :(得分:0)

我想你想要

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

假设你把js放在assets / javascripts?

答案 1 :(得分:0)

您可能需要在资产路径中添加一些内容以进行编译。我认为你不能直接在javascript_include_tag排队。这应生成一个完整的<script></script>标记。你真正想要的只是资产编译的文件名。如果您将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是一个不错的幻灯片。