【问题标题】:Rails scss stylesheet per action每个动作的 Rails scss 样式表
【发布时间】:2016-03-05 12:41:02
【问题描述】:

如何在 Rails 中为每个操作呈现样式表?

由于我的应用程序不是标准的 CRUD 应用程序,因此我的控制器最终会得到一些自定义路由,这些路由需要非常不同的 CSS。

所以,我想知道,有没有办法在每次操作的基础上加载 css,但仍然利用资产管道?

谢谢

【问题讨论】:

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


    【解决方案1】:

    在 stylesheets 目录中为您的每个控制器创建一个目录,并创建与您的操作相对应的 css 文件,然后将其放入您的布局文件中

    <%= stylesheet_link_tag "#{params[:controller]}/#{params[:action]}" %>
    

    【讨论】:

    【解决方案2】:

    您可以使用控制器特定的资产。只需从 application.css 中删除 *= require_tree .。并通过&lt;%= stylesheet_link_tag "style.css" %&gt; 在其视图中包含样式表和特定于操作的样式表,但您必须通过Rails.application.config.assets.precompile = ["style.css"] 告诉rails 编译它们。你可以阅读更多关于它的信息here。这种方式我猜我们正在使用 Rails 资产管道,而不是默认方式。

    【讨论】:

      【解决方案3】:

      根据控制器路径和动作为body添加唯一的id:

      助手:

        def page_id
          "#{controller_path.tr('/', '-')}-#{action_name}".dasherize
        end
      

      布局:

      <body id="<%= page_id %>"...
      

      然后将您的样式范围限定为它:

      /users/index.scss

      #users-index {
        .. page specific styles here ..
      }
      

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 2011-10-18
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 2019-11-14
        • 2011-10-21
        相关资源
        最近更新 更多