jQuery插件和Rails资源管道



我正在使用一个名为Fancy Gallery的jQuery插件,它经常从插件文件夹中的图像文件夹(如background:url("../images/fancygallery/arrows_sprite.png"))调用图像。我的问题有两个部分

  1. 这个插件应该如何与我的rails 3.1应用程序集成?该文件夹应该放在供应商/资产文件夹中吗?该插件有3个文件夹,css,图像,js。如果我把这些放在vendor/assets/stylesheets, vendor/assets/images, vendor/assets/javascripts中,css肯定无法找到../images文件夹中的图像,因为在资产流水线完成后它将不再存在。那么它应该放在哪里呢?

  2. 是否有一种简单的方法,我不必进入我的插件和编辑css无处不在,它是加载图像?我不想每次更新插件时都这样做,必须有一种方法,我可以把插件文件夹按原样放下,让它工作。

经进一步测试

这就是我遇到的问题。例如,在CSS中,这里有一个加载箭头background: url('../images/fancygallery/arrows_sprite.png')的部分。在整个插件中,所有图像都被引用为../images。所以当加载插件时,当页面加载时,这就是图像http://localhost:3000/images/fancygallery/arrows_sprite.png的样子,但是图像不存在,它存在于assets/fancygallery/images文件夹中。有没有办法让../images看起来在http://localhost:3000/assets/fancygallery/images/而不是http://localhost:3000/images/ ?或者一些其他的解决方案,不需要我改变插件代码,以便我可以很容易地更新它以后。

部分问题是

插件css正在加载到我的application.css.SCSS文件中,像这样

@import "fancygallery/css/uniform.aristo";
@import "fancygallery/css/jquery.fancygallery";
@import "fancygallery/css/prettyPhoto";

所以所有的图像都是相关的

我能够通过添加一个fancygallery-plugin文件夹,然后在那里放下fancygallery文件夹来解决这个问题。在asset:precompile之后,在assets文件夹中可以使用fancygallery文件夹。然后我直接调用css和js文件,而不是从application.css.scss文件中调用,如下所示:

<%= stylesheet_link_tag    "fancygallery/css/uniform.agent.css" %>
<%= stylesheet_link_tag    "fancygallery/css/jquery.fancygallery.css" %>
<%= stylesheet_link_tag    "fancygallery/css/prettyPhoto.css" %>
<%= javascript_include_tag "fancygallery/js/jquery.uniform.min.js" %>
<%= javascript_include_tag "fancygallery/js/jquery.fancygallery.min.js" %>
<%= javascript_include_tag "fancygallery/js/jquery.prettyPhoto.js" %>

这使得图像引用按照插件开发人员的意图工作,并且它们加载良好。

最新更新