将大模板资产链接到rails erb文件的正确方法是什么?

时间:2015-11-02 22:18:18

标签: ruby-on-rails asset-pipeline assets

我正在从webarch template开始开发一个rails应用程序。我知道在public /文件夹中添加整个assets文件夹会将资产与我的视图链接起来,但它不会利用资产管道功能。该模板有很多插件和不同的选项,一个通常不使用所有。资产文件夹的大小为30MB。

我将它放在供应商/资产中并将其与资产管道一起使用,但这会产生两个问题:

  1. 我会在我的应用中提供30MB的缩小代码并使用一小部分代码。
  2. 我必须手动重写整个资产文件夹,以便像资产管道所希望的那样使用链接(rm -rf ~/.cordova 来提供file.js)。当然,我会通过脚本来做到这一点,但它似乎仍然是一个人应该首先遇到的问题。
  3. 由于供应商/资产和公共/文件夹似乎都不是这些文件的正确位置,我希望有更好的选择(或者让后面的选项更好地运作)。

1 个答案:

答案 0 :(得分:5)

当文件太大而不能合理地留在一个最小化的资产文件中时,将文件保留在资产管道下的解决方案是按类别拆分资产,在不同的最小化文件中编译这些类别,并将它们包含在您的视图中需要。

我为包含多个"重"的应用程序执行此操作javascripts组件位于我的应用程序的不同区域,并且不经常使用。

1 - 整理您的文件结构

app / assets / javascrips app / assets / stylesheets 中,为我们要创建的每个类别创建一个目录。例子:

  • 应用程序/资产/ javascrips /通用
  • 应用程序/资产/ javascrips /管理
  • 应用程序/资产/ javascrips / USER_ACCOUNT

2 - 创建清单

app / assets / javascrips app / assets / stylesheets 中,为每个类别创建一个清单文件,并将它们包含在相关目录中

文件 app / assets / javascrips / common.js

//= require jquery
//= require_tree ./common

文件 app / assets / javascrips / admin.js

//= require_tree ./admin

文件 app / assets / javascrips / user_account.js

//= require_tree ./user_account

3 - 将您的清单添加到rails 预编译列表

你可以在 config / application.rb 文件中执行此操作,但是当它变大时,最好创建一个初始化文件 config / initializers / assets.rb < / p>

Rails.application.configure do
  config.assets.precompile += %w[common.js admin.js user_account.js]
end

4 - 将它们包含在您的视图和布局中,并设置您的JavaScript库。

将资源文件导入布局和视图。为应用程序的不同区域创建多个布局可能是一个好主意,这些布局将使用公共资源文件。使用的方法是 stylesheet_link_tag 'manifest_file'javascript_include_tag 'manifest_file'

请记住,在动态加载文件时,您可能需要告诉他们需要使用miniminied文件的javascript插件。对于他们,您可以使用配置 .js.erb 文件。例如:

文件 app / assets / javascrips / admin / plug-in_config.js.erb

PLUGIN.config('dynamicFileName', '<%= javascript_path('manifest_file') %>');