【问题标题】:Rails: What makes every css file linked to all .erb filesRails:是什么让每个 css 文件都链接到所有 .erb 文件
【发布时间】:2015-07-27 21:28:58
【问题描述】:

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

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

这里是项目的 github 链接:https://github.com/PabiGamito/pandora

谢谢。

【问题讨论】:

  • “erb 文件”是什么意思?您是指视图吗?
  • 你指的是你所有的css文件都被链接在application.css中吗?那么,这会在所有 HTML 页面中链接吗?
  • 对第一条评论是的,@tompave 是的,我认为这可能会发生。

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


【解决方案1】:

如果您在说“erb 文件”时指的是“视图”,那么您可能需要查看app/views/layouts/application.html.erb。在第 5 行,你有这个:

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

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

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

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

    &lt;%= content_for :stylesheets if content_for?(:stylesheets) %&gt;

    它的作用是添加 :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 %>

应该这样做。

【讨论】:

  • 如何添加 require 指令?是否需要“./stylesheets/admin.css”?
  • 不,对于问题的上下文,您不希望需要 admin.css 文件;但是,作为参考,您可以添加 = require admin 作为评论。 Sprockets 需要相对于样式表文件夹,并且不需要扩展名。
  • 你确定我必须删除 true %>?因为当我这样做时,css 不起作用,但是当我保留它并且只需要我在 application.css 中需要的 css 文件时,它就可以工作。
  • 不,你没有。您必须删除 line 13 of your app/assets/stylesheets/application.css.scss,因为这需要 stylesheets 目录中的所有文件。
  • 是的。就这样完成了。非常感谢您的帮助。我是 Rails 新手,所以我不确定所有内容是如何连接在一起的。
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2014-04-11
相关资源
最近更新 更多