【发布时间】:2014-06-11 10:01:56
【问题描述】:
Rails 新手,我读到我应该将所有 JS/CSS 放入 applications.js/applications.css 并由资产管道处理。但是,我有相当数量的 js/css,仅在管理员登录和添加/编辑页面时使用。
在我看来,在每个页面上加载这些脚本和样式的开销很大。优化这个的最佳方法是什么?我可以创建一个单独的资产管道,仅在管理员登录时包含,或者仅在需要的页面上包含?
-编辑 3-
以下将在生产中工作,但您需要添加:config.assets.precompile += ['editing.js', 'editing.css.scss'] 到 production.rb
-编辑 2- 以下内容实际上不适用于生产。当我有时间时寻找更好的解决方案。
-编辑-
这是我想出的设置。它工作正常,所以我想我是在问是否有任何理由不应该这样做?
application.html
!!!
%html
%head
%meta{:charset => "UTF-8"}
%meta{name: "Description", content: "base10 CMS"}
%title= "base10 CMS"
= stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application"
= csrf_meta_tags
- if admin_signed_in?
= stylesheet_link_tag "editing", media: "all"
= javascript_include_tag "editing"
= cloudinary_js_config
%body
#container
#messages
- flash.each do |name, msg|
= content_tag :div, msg, :id => "flash_#{name}"
#content
= yield
application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
editing.js
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
application.css.scss
/*
*= require baseline
*= require bootstrap
*= require font-awesome
*= require_self
*/
@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
editing.css.scss
/*
*= require_self
*/
@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
【问题讨论】:
-
您可以在 app/views/layouts 中创建一个带有所需 css/js 的新
admin_layout,这将应用于管理视图,请参阅布局以了解更多 guides.rubyonrails.org/… -
这似乎是一种明智的做法。
标签: ruby-on-rails asset-pipeline