【问题标题】:Separate frontend assets from admin assets将前端资产与管理资产分开
【发布时间】:2017-03-21 12:02:51
【问题描述】:

如果可能的话,我想要一些反馈。我有一个具有这种文件夹结构的 Rails 应用程序

rails
- app
-- controllers
--- admin
--- front

所以基本上我在 frontadmin 命名空间上都有控制器。但是,资产目前具有默认设置,如下所示

assets
- stylesheets
- javascripts

所以application.scss 为前台和管理员加载所有css

*
*= require_tree .
*= require_self

如何指定前端布局仅加载前端(而不是管理)所需的资产,以及管理布局仅加载管理资产而不加载前端资产?

【问题讨论】:

  • 可能不是最干净的方式,但您始终可以使用两种不同的布局并以这种方式引用必要的资源。

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


【解决方案1】:

您可以创建两个清单文件(而不是使用默认的application.js/application.scss)并将它们包含在不同的布局中(一个用于front,一个用于admin)。

例如,您可以使用以下文件夹结构:

assets
- javascripts
-- admin
-- front
- stylesheets
-- admin
-- front
- admin.scss
- front.scss

在每个 admin/front 文件夹中,您可以添加所需的特定样式/脚本,然后确保您的清单文件看起来像这样(仅显示样式清单,脚本也是如此):

admin.scss

/*
 * Manifest file for admin styles, to be compiled into admin.scss
 *
 *= require_self
 *= require_tree ./admin
 */

front.scss

/*
 * Manifest file for front styles, to be compiled into front.scss
 *
 *= require_self
 *= require_tree ./front
 */

现在你必须创建你的布局(app/views/layouts):

admin.html.erb

<!DOCTYPE html>
<html>
  <head>
    ... title and metas
    <%= stylesheet_link_tag 'admin', media: 'all' %>
    <%= javascript_include_tag 'admin' %>
  </head>
  <body>
     ... layout content
  </body>
<html>

front.html.erb

<!DOCTYPE html>
<html>
  <head>
    ... title and metas
    <%= stylesheet_link_tag 'front', media: 'all' %>
    <%= javascript_include_tag 'front' %>
  </head>
  <body>
     ... layout content
  </body>
<html>

最后,您必须在 config/initializers/assets.rb 中添加清单文件以进行预编译:

... some code
Rails.application.config.assets.precompile += %w(admin.scss front.scss)
Rails.application.config.assets.precompile += %w(admin.js front.js)

现在您只需要使用所需的布局(admin.html.erbfront.html.erb) 渲染视图时。

【讨论】:

  • 嗨,我删除了 layouts/application.html.erb 并在同一个地方创建(admin.html.erb 和 front.html.erb)。我也在 assets.rb 中添加了清单文件,但是当我尝试访问我的前端时,没有加载 front.html.erb。
猜你喜欢
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多