Mel*_*emi 12 ruby-on-rails galleria ruby-on-rails-3.1 sprockets asset-pipeline
关于在Rails 3.1的新资产管道中放置像Galleria这样的jQuery框架,我有点困惑?
从技术上讲,我知道它应该进入/vendors/assets/javascripts 但是,我的理解是,Galleria带有jQuery和主题的文件夹想要/galleria在实时站点的root()中才能正常工作.
此外,当我们在它的时候,在哪里放置以下脚本,以便它只出现在带有图库的页面上?
<script>
$('#gallery').galleria({
width:500,
height:500
});
</script>
Run Code Online (Sandbox Code Playgroud)
编辑:惊讶没有回应!?!也许Galleria不那么受欢迎?这些是我正在尝试加载的文件.虽然我可以很容易地移动它们,但它们是这样捆绑的:
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
Run Code Online (Sandbox Code Playgroud)
我以为Sprockets require_tree .会加载所有内容app/assets,lib/assets并且vendor/assets?!?
Adr*_*eil 22
我遇到了同样的问题,需要一段时间才能开始工作.最初,它可以在开发上运行良好,但是当我们转向生产时,由于资产文件名现在具有"指纹",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
Run Code Online (Sandbox Code Playgroud)
将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 .
Run Code Online (Sandbox Code Playgroud)
在您的app/assets/stylesheets/application.css文件中,请确保您有行
*= require galleria.classic
*= require_tree .
Run Code Online (Sandbox Code Playgroud)
最后,Galleria似乎内置了一些花哨的非标准css加载.这就是阻止Galleria在我们的生产网站上加载的原因.由于我们已经包含了样式表,因此我们要禁用此行为.只需打开galleria.classic.js(或您的Galleria主题javascript文件),并替换该行:
css: 'galleria.classic.css',
Run Code Online (Sandbox Code Playgroud)
有:
css: false,
Run Code Online (Sandbox Code Playgroud)
这将告诉Galleria不要尝试加载样式表.
还有一件事 - 在尝试编译这些资产时,我遇到了Rails 3.1.0中显然是一个错误.当我跑步时rake assets:precompile,我得到的错误如下:
$ bundle exec rake assets:precompile
rake aborted!
classic-loader.gif isn't precompiled
(in /vendor/assets/stylesheets/galleria.classic.css.scss)
Run Code Online (Sandbox Code Playgroud)
长话短说,你需要设置这一行config/environments/production.rb:
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)
3.1.1发布后,这不是必需的.
小智 2
我也偶然发现了这个问题。划分现有库以使其适合当前的 javascript/样式表结构有点麻烦。因此,您可以向 application.rb 文件添加额外的路径以从中加载资源,如下所示:
# Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/libs"
Run Code Online (Sandbox Code Playgroud)
在 app/assets 下创建一个“libs”文件夹,将 Galleria 库复制到此文件夹并将其添加到您的应用程序布局文件中:
<%= javascript_include_tag 'galleria/galleria-1.2.4.min.js' %>
<%= javascript_include_tag 'galleria/themes/classic/galleria.classic.min.js' %>
Run Code Online (Sandbox Code Playgroud)
您还可以通过需要 js 文件来捆绑 Galleria 代码,但这取决于您。
| 归档时间: |
|
| 查看次数: |
3881 次 |
| 最近记录: |