【问题标题】:Rails 3.2 using different CSS page for a few actions in controller (not the whole controller)Rails 3.2 在控制器(不是整个控制器)中使用不同的 CSS 页面进行一些操作
【发布时间】:2013-08-30 15:09:16
【问题描述】:

这是场景:

我的大多数页面都使用来自不同页面的 CSS,这些 CSS 按照默认的 Rails 编译成一个大的 CSS 文件,这没有问题。

但是我在控制器中有几个页面是actions,它们需要使用不同的 CSS 页面,而不是其他页面。这些只是控制器中的大约 3 个操作,否则会使用主要的、默认的、已编译的 CSS。

为了实现这一点,我为需要单独页面的操作调用了特定布局:

  format.html { render :layout => 'doghouse_template' }

这个doghouse_template 有这个电话:

  = stylesheet_link_tag "doghouse_page"

这在开发中运行良好,如果需要,页面会在运行中编译,但在生产中,我收到以下错误:

ActionView::Template::Error (doghouse_page.css isn't precompiled)

这是因为doghouse_page.css不是单独编译的,是编译到主application.css文件中的,所以public/assets文件夹中当然不存在。

我还应该指出,doghouse.css 并不是真正的 CSS 页面,而是 SCSS 所以我不能在不编译某种类型的情况下将其复制到 public/assets

我的问题是,这里的解决方案是什么?

我不能为这些使用 application.css 文件,我们称它们为 doghouse 页面,因为它会弄乱样式,反之亦然。

我什至尝试将文件放入 application.rb:

config.assets.precompile += %w( doghouse_page.css.scss )

但并没有什么不同。另一方面,如果我输入:

config.assets.precompile += %w( *.css )

由于 bootstrap/_accordion.scss 文件,我在预编译时遇到错误,所以我不能这样做。

我在这里看到了非常相似的问题,但它们往往适用于对整个控制器使用不同的 CSS,并且没有指定如何不将所有页面编译为一个。

请注意,我确实想要分离所有 CSS 页面(表面上这是一种解决方案),只是这个单独的页面。

谢谢。

【问题讨论】:

    标签: css ruby-on-rails-3.2 sass stylesheet


    【解决方案1】:

    您应该可以这样做(注意,缺少 .scss,即使 doghouse_page.css.scss 是您的文件):

    config.assets.precompile += %w( doghouse_page.css )
    

    如果可以,我会考虑这样做。这对我来说效果很好。将 doghouse_page.css.scss 移动到“额外”文件夹中。那么:

    config.assets.precompile += %w( extras/*.css )
    

    然后在你的 app/views/layout/application... 文件中为控制器和动作的 body 标签添加类。下面是我在一个项目中使用的 HAML 版本。

    %body{:class => ["c-#{controller_name}", "a-#{action_name}", I18n.locale]}
    

    然后,调整 doghouse_page.css.scss,使其范围在具有正确控制器/动作类的 body 标记下。

    就我而言,我通常只想覆盖一些东西或添加一些东西并保留 application.css.scss 中的大部分内容。这可能不适合您,但如果可以,这是自定义各个页面/操作的一种相当干净的方式。

    【讨论】:

    • 哇,这么简单的事情,我从来没想过要这样做!我尝试了我能想到的一切,除了这个。添加.css 而不是.scss 有效!太感谢了!在过去的两天里,我一直在与这个作斗争,并放弃并选择了config.assets.compile = true,但这似乎解决了它。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多