ruby-on-rails – 在Rails 3.1资产管道中放置Galleria(jQuery图像库框架)的位置?

我在Rails 3.1的新资产管道中放置像 Galleria这样的jQuery框架有点困惑?

我知道,在技术上,应该进入/ vendor / assets / javascripts,但我的理解是,这个galleria文件夹与jQuery&主题想要在实际网站的根(/ galleria)中,以便正常工作.

此外,当我们在这里,放置以下脚本的地方,它将只出现在带有图库的页面上?

<script>
    $('#gallery').galleria({
        width:500,height:500
    });
</script>

编辑:惊讶没有回应!也许广场是不是很受欢迎?这些是我要加载的文件.他们是捆绑的,虽然我可以轻松地移动他们:

vendor/
  assets/
    javascripts/
      galleria-1.2.5.js
      galleria-1.2.5.min.js
    galleria/
      themes/
        classic/
          classic-loader.gif
          classic-map.png
          galleria.classic.css
          galleria.classic.js
          galleria.classic.min.js

我认为Sprockets require_tree.将加载应用/资产,库/资产和供应商/资产的所有内容

解决方法

我有同样的问题,花了一段时间才能上班.最初,它可以在开发上正常工作,但是当我们转向生产时,galleria地失败了,因为资产文件名现在具有“指纹”.这也似乎是jQuery UI主题和许多其他这样的脚本的问题.

当然,你可以回到旧的做事方式,把所有东西都放在“公共”中,但是我们希望自动合并所有的css / js文件,并以rails的方式做事情.

这是我如何工作的:

vendor/
  assets/
    images/
      classic-loader.gif
      classic-map.gif
    javascripts/
      galleria-1.2.5.js
      galleria.classic.js
    stylesheets
      galleria.classic.css.scss

galleria.classic.css文件重命名galleria.classic.css.scss.然后替换图像引用,像这样(我有两个):

url(“classic-loader.gif”)成为image-url(“classic-loader.gif”)

更新:看起来你不需要这样做在Rails 3.1.1.只需将文件重命名为.css.scss,rails就会自动为您处理url()调用.

在你的app / assets / javascripts / application.js文件中,确保你有行

//= require galleria-1.2.5
//= require galleria.classic
//= require_tree .

在你的app / assets / stylesheets / application.css文件中,确保你有行

*= require galleria.classic
*= require_tree .

最后,galleria似乎有一些奇特的非标准css加载内置.这是阻止galleria加载到我们的生产网站.由于我们已经包括样式表,我们要禁用此行为.只需打开galleria.classic.js(或您的galleria主题JavaScript文件),并替换行:

css: 'galleria.classic.css',

有:

css: false,

这将告诉galleria不要尝试加载样式表.

还有一件事 – 当试图编译这些资产时,我遇到了一个明显的bug in Rails 3.1.0.当我运行rake资产:预编译时,我有错误,如:

$bundle exec rake assets:precompile
rake aborted!
classic-loader.gif isn't precompiled
  (in /vendor/assets/stylesheets/galleria.classic.css.scss)

长篇小说,您需要在config / environments / production.rb中设置此行:

config.assets.compile = true

一旦3.1.1被释放,这不是必需的.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...