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

时间:2015-07-27 21:28:59

标签: ruby-on-rails asset-pipeline sprockets

我注意到我的所有css文件都链接到了erb视图文件。它与资产管道或procket轨道有什么关系吗?

我想知道如何禁用该功能并使其成为只有某些css文件链接到特定的erb文件。

以下是该项目的github链接:https://github.com/PabiGamito/pandora

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您在说“erb files”时表示“观看”,那么您可能需要查看app/views/layouts/application.html.erb。在第5行,你有这个:

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

这包括每页上的样式表。这会创建一个链接标记,其中application.css文件是目标(如果您进入资产,则应找到application.css)。

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

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

    <%= 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 %>
  5. 那应该这样做。