Ruby on rails Rails资产管道和特定于管理员的javascript和css

Ruby on rails Rails资产管道和特定于管理员的javascript和css,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,rails的新手,我读到我应该将所有的JS/CSS放入applications.JS/applications.CSS,并由资产管道处理。然而,我有相当数量的js/css,只有当管理员登录并添加/编辑页面时才使用 在我看来,在每一页上加载这些脚本和样式需要很大的开销。优化这一点的最佳方法是什么?我可以创建一个单独的资产管道,只在管理员登录时包含,或者只在需要的页面上包含 -编辑3- 以下内容将在生产环境中使用,但是您需要添加:config.assets.precompile+=['editing

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
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
 *= require baseline
 *= require bootstrap
 *= require font-awesome
 *= require_self
*/

@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
 *= require_self
*/

@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
编辑.js

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
 *= require baseline
 *= require bootstrap
 *= require font-awesome
 *= require_self
*/

@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
 *= require_self
*/

@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
application.css.scss

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
 *= require baseline
 *= require bootstrap
 *= require font-awesome
 *= require_self
*/

@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
 *= require_self
*/

@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
编辑.css.scss

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
 *= require baseline
 *= require bootstrap
 *= require font-awesome
 *= require_self
*/

@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
 *= require_self
*/

@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';

你的方法很好。需要记住的一点是,在生产中,
application.js
application.css.scss
清单中的所有指令都将编译成一个文件(
application.js
application.css
)所以在大多数情况下不会有太多的开销。如果有很多额外的东西需要你来支持登录管理员,那么是的,你的方法很好,否则,我不必担心它,只需将所有内容留在
应用程序中。*
清单。

您可以在app/views/layouts中创建一个新的
admin\u布局
,该布局在app/views/layouts中具有所需的css/js,将应用于admin视图查看布局了解更多信息这似乎是一种明智的方法。