7

Plupload插件就是一个很好的例子。这是添加到vendor目录的插件列表:

./plupload/jquery.plupload.queue
./plupload/jquery.plupload.queue/css
./plupload/jquery.plupload.queue/css/jquery.plupload.queue.css
./plupload/jquery.plupload.queue/img
./plupload/jquery.plupload.queue/img/backgrounds.gif
./plupload/jquery.plupload.queue/img/buttons-disabled.png
./plupload/jquery.plupload.queue/img/buttons.png
./plupload/jquery.plupload.queue/img/delete.gif
./plupload/jquery.plupload.queue/img/done.gif
./plupload/jquery.plupload.queue/img/error.gif
./plupload/jquery.plupload.queue/img/throbber.gif
./plupload/jquery.plupload.queue/img/transp50.png
./plupload/jquery.plupload.queue/jquery.plupload.queue.js
./plupload/jquery.ui.plupload
./plupload/jquery.ui.plupload/css
./plupload/jquery.ui.plupload/css/jquery.ui.plupload.css
./plupload/jquery.ui.plupload/img
./plupload/jquery.ui.plupload/img/plupload-bw.png
./plupload/jquery.ui.plupload/img/plupload.png
./plupload/jquery.ui.plupload/jquery.ui.plupload.js
./plupload/plupload.browserplus.js
./plupload/plupload.flash.js
./plupload/plupload.flash.swf
./plupload/plupload.full.js
./plupload/plupload.gears.js
./plupload/plupload.html4.js
./plupload/plupload.html5.js
./plupload/plupload.js
./plupload/plupload.silverlight.js
./plupload/plupload.silverlight.xap

与其将这些文件重新定位到各种样式表、javascript 和图像目录中,不如将它们留在原处并使用 Sprockets 的 require 指令引用它们。这是如何完成的,尤其是对于图像文件和其他资产,如 .swf 和 .xap?

4

2 回答 2

4

您可以使用Sprocketsprovide指令

例如,这就是我使用 Plupload 的方式:

# app/assets/javascripts/plupload.js
//= require plupload/plupload
//= require plupload/plupload.flash
//= require plupload/plupload.silverlight
//= provide plupload/dependencies

相应的供应商目录组织如下:

vendor
├── assets
│   ├── javascripts
│   │   └── plupload
│   │       ├── dependencies
│   │       │   ├── plupload.flash.swf
│   │       │   └── plupload.silverlight.xap
│   │       ├── plupload.flash.js
│   │       ├── plupload.js
│   │       └── plupload.silverlight.js
│   └── stylesheets
└── plugins

然后<%= javascript_include_tag 'plupload' %>当我想使用 Plupload 时使用,并使用asset_path帮助程序填充 Plupload 配置:

<%= javascript_include_tag 'plupload' %>

<script type="text/javascript">
$(function() {
    var uploader = new plupload.Uploader({
        runtimes : 'flash,silverlight',
        multipart : true,
        multipart_params : {
            'authenticity_token' : '<%= form_authenticity_token %>'
        },
        flash_swf_url : 
            '<%= asset_path "plupload/dependencies/plupload.flash.swf" %>',
        silverlight_xap_url :
            '<%= asset_path "plupload/dependencies/plupload.silverlight.xap" %>',
        url : '<%= url_for [@item, :photos] %>',
        // ...
    });

希望有帮助。

于 2011-07-28T11:54:00.940 回答
2

我可能错了,但是,正如 Rails 文档中所述:

这并不是说资产可以(或不应该)不再公开;它们仍然可以并且将由应用程序或 Web 服务器作为静态文件提供。如果您希望您的文件在提供之前经过一些预处理,您只会使用应用程序/资产。 http://ryanbigg.com/guides/asset_pipeline.html

由于您不希望对这些文件进行任何预处理,那么旧的公用文件夹可以成为您的答案吗?

于 2011-08-09T04:04:35.980 回答