gpt4 book ai didi

ruby-on-rails - 将前端 Assets 与管理 Assets 分开

转载 作者:行者123 更新时间:2023-12-01 12:22:28 25 4
gpt4 key购买 nike

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

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

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

assets
- stylesheets
- javascripts

所以 application.scss 加载前端和管理的所有 css

*
*= require_tree .
*= require_self

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

最佳答案

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

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

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

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

管理.scss

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

前端.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 中添加 list 文件以进行预编译:

... 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)在呈现您的 View 时。

关于ruby-on-rails - 将前端 Assets 与管理 Assets 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com