gpt4 book ai didi

ruby-on-rails-3.2 - 带有主题的 Rails Assets 管道

转载 作者:行者123 更新时间:2023-12-04 18:46:53 24 4
gpt4 key购买 nike

我有一个应用程序,允许用户为他们的页面选择一个主题。有几个不同的主题可供他们选择。

每个页面的 HTML 结构与 div 上的相同类名完全相同。 CSS 因填写主题而异。当用户选择一个主题时,我将主题 id 存储在数据库中,并在访问页面时查询它,在 application_layout.html.erb 中加载相应的 CSS 文件。 :

<%= yield(:theme_style) %>

users_page.html.erb ,我用以下命令抓取适当的文件:
<%= provide(:theme_style, "theme_styles/#{@user.style.style_filename_file_name}") %>

因为页面结构不会改变,所以不要将 CSS 文件编译到一个大的 CSS 文件中是很重要的,否则最后一个主题将是唯一可用的,因为它会覆盖所有以前的样式。如何让 Rails 处理主题文件?

production.rb , 我有 config.assets.precompile += ['theme_styles/basic.css', 'theme_styles/two-column.css']但这似乎不起作用,因为它告诉我它没有预编译。

我似乎无法在任何地方找到足够的信息来让我朝着正确的方向前进,而且我已经查看了博客、SO 问题和 Rails 文档。

最佳答案

我知道这是一个旧的,但我想我会回答我所做的,以防它帮助其他人。我在我的应用程序中也有类似的需求,在没有找到很多结果之后,在一个由自定义选择器控制的 css 文件中使用它们时遇到了 IE 最大数量的选择器错误,我最终走上了让每个主题都不同的路线通过创建如下所示的文件夹结构来创建 CSS 文件:
整体文件夹结构:

  • /app/assets/stylesheets/
  • /app/assets/stylesheets/all/
  • /app/assets/stylesheets/theme-1/
  • /app/assets/stylesheets/theme-2/

  • 在 app/assets/styleshsets 我把 application.css.scss (或者如果你不使用 sass 只是 css)
    这个文件有一个 require self 和一些我在所有网站上都使用的 mixin,但就是这样
     *= require_self
    展望 future ,我有一个用于每个主题的 css 文件夹和一个用于所有主题的文件夹,每个文件夹都有一个 list ( list 位于主/stylesheets 文件夹中)。正确设置最终需要一些工作,但是一旦配置就像魅力一样,不再为具有不同主题的人提供重叠或无关的 css,解决 IE maximum selectors issues too .
    更多细节
    所有共享 css 的所有文件夹
    /应用程序/ Assets /样式表/所有/
    所以把你在所有主题上使用的任何 css 文件放在那里。我把一个项目的 bootstrap 放在那里,但你可以把任何共享的 CSS 放在那里。那个 list 是……
     *= require_self
    *= require_tree ./all
    然后是您的主题,每个主题都有自己的文件夹:
    /app/assets/stylesheets/theme-1/
    它很明显:
       *= require_self
    *= require_tree ./theme-1
    因此,您的第二个主题将是相同的(文件夹名称和 list 中使用 2 而不是 1)。
    使这些在 Assets 管道中发挥作用
    在您的 production.rb 文件中添加以下内容
      config.assets.precompile += %w( application-all.css application-theme-1.css application-theme-2.css, etc.)
    我确实将我的主题存储到客户端站点并动态提供,这也允许我在运行时进行更改。在我的一个 Controller (或应用程序,如果这是站点范围的设置)中:
    class MyController < ApplicationController
    layout :serve_layout
    ...
    def serve_layout
    #do what you need to call your layout / theme...
    end
    希望这能帮助被困在这条船上的其他人。

    关于ruby-on-rails-3.2 - 带有主题的 Rails Assets 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684400/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com