Rails:是什么让每个 css 文件链接到所有 .erb 文件

Rails: What makes every css file linked to all .erb files

我注意到我的所有 css 文件都 linked 到 erb 视图文件。跟asset pipeline或者prockets有关系吗rails?

我想知道如何禁用该功能并使之仅将某些 css 文件 link 编辑到特定的 erb 文件。

这里是 github link 项目:https://github.com/PabiGamito/pandora

谢谢。

如果您在说 "erb files," 时指的是 "views",那么您可能想看看 app/views/layouts/application.html.erb。在第 5 行,你有这个:

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>

这就是每个页面上包含样式表的内容。这将创建一个 link 标签,application.css 文件是目标(如果你进入你的资产,你应该找到一个 application.css)。

为了仅在某些页面上包含某些样式表,您将不得不进行一系列更改。

  1. 首先,您必须在 link 标签下方添加一个 content_for。这允许您在另一个视图中定义要在该点添加的内容。您可能希望在样式表 link 下添加一行,其中包含:

    <%= content_for :stylesheets if content_for?(:stylesheets) %>
    

    它的作用是添加来自 :stylesheets 内容的内容(如果已定义)。

  2. 您必须修改 application.css.scss 文件。在第13行,你有require_tree .,它需要所有个文件在app/assets/stylesheets目录下,这是不是你要的想。您必须删除它,并手动要求每个要包含在 application.css 文件中的文件。

  3. 您必须创建一个新文件,命名为(例如)admin.css(.scss).scss 是可选的)。在该文件中,您可以放置​​任何您想要的样式。由于您从应用程序 css 文件中删除了 require_tree .,因此除非您为它添加 require 指令(尽管您不想这样做),否则它不会被包括在内。

  4. 在任何你想要的视图中,你必须放置以下内容:

    <% content_for :stylesheets do %>
      <%= stylesheet_link_tag 'admin', media: 'all', 'data-turbolinks-track' => true %>
    <% end %>
    

这样就可以了。