首页 文章

Rails 3.1和jquery-ui资产

提问于
浏览
52

这是在另一个问题中提出的,但在3.1rc1中,没有一个解决方案对我有用 .

我正在尝试使用rails 3.1中的新资产 - 我有文件:

./vendor/assets/stylesheets/jquery-ui-1.8.13.custom.css
./vendor/assets/javascripts/jquery-ui-1.8.13.custom.min.js

然后我补充说:

//= require jquery-ui to app/assets/javascripts/application.js
*= require jquery-ui to app/assets/stylesheets/application.css

jquery-ui javascript文件加载得很好,但是css文件说:

Sprockets::FileNotFound (couldn't find file 'jquery-ui'
     (in /home/xanview2/xancar/app/assets/stylesheets/application.css):6):

有任何想法吗?

8 回答

  • 5

    工作设置示例:

    $ cat app/assets/javascripts/application.js
    
        //= require jquery
        //= require jquery-ui
    
    
        $ cat app/assets/stylesheets/application.css
    
        /*
         *= require vendor
         *
         */
    
    
        $ cat vendor/assets/stylesheets/vendor.css
    
        /*
         *= require_tree ./jquery_ui 
         *
         */
    
        vendor/assets/ $ tree
         stylesheets
             vendor.css
                 jquery_ui
                          jquery-ui-1.8.13.custom.css
                          ...
         images
            jquery_ui
                ui-bg_flat_0_aaaaaa_40x100.png
                ...
    

    最后运行此命令:

    vendor/assets/images $ ln -s jquery_ui/ images
    

    享受您的jQuery UI

  • 2

    这篇关于Rails 3.1的资产管道和jQuery UI的文章很棒:JQuery-UI css and images, and Rails Asset Pipeline

  • 0

    你可能会对 jquery-ui-rails gem(参见announcement)更加幸运,它将jQuery UI JavaScripts,样式表和图像打包为资产 .

  • 5

    这个话题出现了很多,现在已经过了很长时间,事情可能会有所不同 .

    在Rails 3.1.2中,我发现了一些没有符号链接的东西 . 按照上面的步骤,但 put the images for the theme right next to the jquery-ui-xxx.css file in an images/ folder. 这给我带来了一些令人头疼的问题 .

    是的,这意味着图像将驻留在供应商/资产中的样式表/文件夹中,但它可以正常运行 .

  • 6

    你尝试过使用rails-asset-jqueryui宝石吗?它供应商jquery-ui和标准主题(目前为v1.8.16)并通过资产管道提供它们 . 以下示例调用Smoothness主题 .

    Gemfile:

    ....
    gem 'rails-asset-jqueryui'
    ...
    

    app / assets / javascripts / application.js:

    ...
    //= require jqueryui
    ...
    

    app / assets / stylesheets / application.css:

    ...
    = require smoothness
    ...
    
  • 11

    如果你正在使用jquery-ui-rails gem:

    application.css

    /*
     *= require jquery.ui.all
     */
    

    的application.js

    //= require jquery.ui.all
    
  • 8

    在我看来,通过将这些库资产从资产/ javascripts和资产/样式表dirs中保留出来,可以避免很多混乱,其中sprockets等人对应该发生什么有一些看法 .

    假设您已从themeroller下载了自定义的jquery-ui zip文件 . 试试这个:

    • 将zip文件解压缩到资产目录的子目录中,类似于
    vendor/assets/jquery-ui-1.8.23.custom
    
    • 在application.rb中添加:
    config.assets.paths << Rails.root.join('vendor', 'assets', 'jquery-ui-1.8.23.custom').to_s
    
    • 在通常的地方添加清单文件:

    供应商/资产/ Java脚本/ jQuery的ui.js:

    //= require_tree ../jquery-ui-1.8.23.custom
    

    供应商/资产/样式表/ jQuery的ui.css:

    *= require_tree ../jquery-ui.1.8.23.custom
    

    在config / environments / production.rb中

    • ,add(指清单文件名):
    config.assets.precompile += %w(jquery-ui.js jquery-ui.css)
    
    • 在视图中:
    <%= stylesheet_link_tag 'jquery-ui' %>
    <%= javascript_include_tag 'jquery-ui' %>
    
  • 63

    如果你使用这个:

    https://github.com/carlhoerberg/sprockets-urlrewriter

    我相信你可以将整个shebang转储到一个目录中并需要css文件...它会顺利地重写相对的URL .

    你只需要安装gem并在application.rb中添加一个配置行

相关问题