【问题标题】:Rails asset pipeline for custom theme用于自定义主题的 Rails 资产管道
【发布时间】:2012-12-27 16:01:00
【问题描述】:

我的 rails 应用有一个自定义主题。该主题由 8 个结构复杂的文件夹(子文件夹、大量文件)组成。其中一个文件夹是 bootstrap,它由 css、js 和 img 子文件夹组成。其他一些文件夹和子文件夹也包含 css、js 和图像。

如何使用资产管道预编译这些文件以及如何从代码中访问它们?

【问题讨论】:

    标签: ruby-on-rails asset-pipeline


    【解决方案1】:

    我最近购买了一个大型 HTML5 主题,并执行了将其放入我的 rails 项目并使用资产管道的工作。我必须做一些批量查找/替换才能让图像 URL 满意。这是我使用的总体方法:

    1. 将所有提供的“图像”文件和目录放在 /vendor/assets/images。
    2. 将所有提供的样式表放在 /供应商/资产/样式表
    3. 将所有提供的 javascript 放在 /vendor/assets/javascripts

    使用上述方法,所有相对路径都应按照主题供应商的要求进行维护。例如,我的主题供应商将所有图像都放在一个“img”目录下,所以我只是复制了那个目录,所以它是 /vendor/assets/images/img/...

    现在,我们需要获取 application.css 和 application.js 文件以正确提取所需的文件:

    1. 在 /app/assets/javascripts/application.js 中添加要求行以添加主题供应商要求的所有 javascript
    2. 在 /app/assets/stylesheets/application.css 添加 require 行以添加所需的所有样式表

    现在棘手的部分取决于您的 javascript 和样式表是否包含其他项目。对于任何这样做的文件,我建议您将它们重命名为 .erb(在文件名中添加 .erb),这样您就可以使用诸如 asset_pathimage_path 之类的 Rails 帮助程序:

    .i24_arrow-180{ background-image: url(<%= asset_path 'img/icons/packs/fugue/24x24/arrow-180.png' %>); }
    

    或者,在您的 javascript 中:

    '<%= asset_path('js/mylibs/charts/jquery.flot.orderBars') %>':
    

    一旦您修复了任何图像路径,您应该准备好使用新主题,并且它将与资产管道一起使用!

    警告:我花了几个小时调试一个主题的资产编译问题,结果发现这是因为 一个 图像在文件名和 sass 中有括号编译器对此作呕!

    【讨论】:

    • 您好,谢谢您的回答。我说得对吗,您将不得不做大量的手工工作,而且 Rails 的设计不适合这种自定义资产结构?
    • 我必须同意你的看法。事实上,我已经与一个自定义主题搏斗了将近一个星期。它在开发中运行良好,但在资产预编译后出现错误。因为主题(来自 Themeforest 的 Mango)包含如此多的 javascript 库(其中一个是 requirejs),所以很难进行故障排除。您可能还想查看 railsthemes.com 他们没有很多主题,但他们确实可以快速轻松地集成到 Rails 中。
    【解决方案2】:

    对于引导程序,我建议使用 rails bootstrap gem。如果您将其余资产放在 app/assets/{javascripts|stylesheets} 目录中,它们将被打包到一个 application.{js|css} 文件中,因为您的清单默认具有 require_tree 指令。

    对于图片,只需将它们放在 app/assets/images 中,就可以像在您的公共目录中一样访问它们

    【讨论】:

    • 您好,感谢您的回复。但原始目录未命名为 javascript 和样式表。不是所有的交叉引用都搞砸了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多