Javascript 如何为Rails 5.1中的每个视图提供特定的JS和CSS文件

Javascript 如何为Rails 5.1中的每个视图提供特定的JS和CSS文件,javascript,css,asset-pipeline,ruby-on-rails-5.1,Javascript,Css,Asset Pipeline,Ruby On Rails 5.1,我一直在为一个项目使用Rails 3.2。我现在正在用Rails 5.1构建一个新项目。我广泛使用Rails的M&C部分,几乎没有任何视图。这是因为我使用了第三方供应商DHTMLX提供的JavaScript UI库 他们有各种UI组件,并提供了特定于每个组件的JS和CSS文件 根据我在特定“视图”中使用的组件,我只希望在代码中包含相关的JS和CSS文件。按照Rails惯例,我在视图文件夹下有一个子文件夹,与每个控制器同名,然后在每个子文件夹中有.erb文件,其名称与控制器中的方法名称匹配 然而,

我一直在为一个项目使用Rails 3.2。我现在正在用Rails 5.1构建一个新项目。我广泛使用Rails的M&C部分,几乎没有任何视图。这是因为我使用了第三方供应商DHTMLX提供的JavaScript UI库

他们有各种UI组件,并提供了特定于每个组件的JS和CSS文件

根据我在特定“视图”中使用的组件,我只希望在代码中包含相关的JS和CSS文件。按照Rails惯例,我在视图文件夹下有一个子文件夹,与每个控制器同名,然后在每个子文件夹中有.erb文件,其名称与控制器中的方法名称匹配

然而,我的.erb文件几乎完全由指向DHTMLX提供的JS和CSS文件的链接组成&我编写的任何JavaScript函数都可以使视图正常工作。下面是我的start/index.erb文件的示例:

<% content_for :head do %>

    <link href="/assets/javascripts/dhtmlxSuite_v30/dhtmlxLayout/codebase/dhtmlxlayout.css" media="all" rel="stylesheet" type="text/css" />
    <link href="/assets/javascripts/dhtmlxSuite_v30/dhtmlxLayout/codebase/skins/dhtmlxlayout_dhx_skyblue.css" media="all" rel="stylesheet" type="text/css" />
    <link href="/assets/javascripts/dhtmlxMessage/codebase/message_skyblue.css" media="all" rel="stylesheet" type="text/css" />

    <%= javascript_include_tag "/assets/javascripts/nx/nxcommon.js" %>
    <%= javascript_include_tag "/assets/javascripts/nx/dateformat.js" %>
    <script src="/assets/javascripts/dhtmlxSuite_v30/dhtmlxLayout/codebase/dhtmlxcommon.js" type="text/javascript"></script>
    <script src="/assets/javascripts/dhtmlxSuite_v30/dhtmlxLayout/codebase/dhtmlxcontainer.js" type="text/javascript"></script>
    <script src="/assets/javascripts/dhtmlxSuite_v30/dhtmlxLayout/codebase/dhtmlxlayout.js" type="text/javascript"></script>
    <script src="/assets/javascripts/dhtmlxMessage/codebase/message.js" type="text/javascript"></script>

  <title>GourmIndia System</title>

    <style type="text/css">
        html,body {
            background-color: #fff;
            color: #666;
            text-align: left;
            font-family: arial, sans-serif;
            width:100%;
            height:100%;
            margin:0px;
            overflow:hidden;
        }
    </style>

    <script type="text/javascript">

      var lyoMain;
      var dsCity;
      function doOnLoad()
      {
          SiteStatus = '<%= @sitestatus %>'
          setupLayout();
      }


      function setupLayout()
      {
          lyoMain = new dhtmlXLayoutObject(document.body,'2E','dhx_skyblue');
          lyoMain.cells('a').hideHeader();
          lyoMain.cells('b').hideHeader();
          lyoMain.cells('a').setHeight(60);
          lyoMain.cells('a').fixSize(true,true);
          lyoMain.cells('b').fixSize(true,true);
          lyoMain.cells('a').attachURL('/banner/index');
          switch(SiteStatus)
          {
              case 'LIVE':
                  lyoMain.cells('b').attachURL('/user/index');
                  break;
              case 'MAINT':
                  dhtmlx.modalbox({
                      text: '<%= @sitestatusmsg %>'
                  });
                  break;
          }
      }

      function doUnLoad()
      {

      }

    </script>
<% end %>

美食家系统
html,正文{
背景色:#fff;
颜色:#666;
文本对齐:左对齐;
字体系列:arial,无衬线;
宽度:100%;
身高:100%;
边际:0px;
溢出:隐藏;
}
利奥曼变种;
城市风险;
函数doOnLoad()
{
站点状态=“”
setupLayout();
}
函数setupLayout()
{
lyoMain=新的dhtmlXLayoutObject(document.body,'2E','dhx_skyblue');
lyoMain.cells('a').hideHeader();
lyoMain.cells('b').hideHeader();
lyoMain.细胞('a')。设定高度(60);
lyoMain.cells('a').fixSize(真,真);
lyoMain.cells('b').fixSize(真,真);
lyoMain.cells('a').attachURL('/banner/index');
交换机(站点状态)
{
“现场”案例:
lyoMain.cells('b').attachURL('/user/index');
打破
“维护”案例:
dhtmlx.modalbox({
文本:“”
});
打破
}
}
函数doUnLoad()
{
}
可以看出,尽管它有.erb扩展名,但除了顶部的content_和一些javascript_include_标记之外,几乎没有Rails视图类型功能

在Rails3.2下,所有的DHTMLX库都位于public/assets/javascript/dhtmlxSuite_v30/!组件名称/codebase/*.js&*.css文件。所有这些在Rails 3.2中都运行良好


现在,当我尝试在Rails 5.1中做类似的事情时,我遇到了资产管道的概念,尽管我已经阅读了很多次Rails指南,但我仍然很难理解应该将DHTMLX文件放在哪里,以及应该如何调用以仅在每个相关文件中包含特定的文件查看。

动态地,您可以通过向
URL
添加一个简单的
GET
参数来解析这些文件,使用文件as:
我很抱歉这个问题真的是一派胡言。我已经忘记了视图/布局中的application.html.erb,我在3.2项目中修改了它(之前的一些项目),在head部分中添加了一个标记,允许我执行上述操作。我真诚地向所有读到这篇文章并浪费时间的人道歉。也非常感谢@headmax仍然希望提供帮助。