ruby-on-rails-3.2 – Rails资产管道与主题

ruby-on-rails-3.2 – Rails资产管道与主题,第1张

概述我有一个应用程序,允许用户为他们的页面选择一个主题.有几种不同的主题供他们选择. 每个页面的HTML结构与div上的相同类名完全相同. CSS会有所不同以填写主题.当用户选择主题时,我将主题id存储在数据库中,并在访问页面时查询它,在application_layout.html.erb中加载适当的CSS文件: <%= yield(:theme_style) %> 在users_page.html 我有一个应用程序,允许用户为他们的页面选择一个主题.有几种不同的主题供他们选择.

每个页面的HTML结构与div上的相同类名完全相同. CSS会有所不同以填写主题.当用户选择主题时,我将主题ID存储在数据库中,并在访问页面时查询它,在application_layout.HTML.erb中加载适当的CSS文件:

<%= yIEld(:theme_style) %>@H_404_14@  

在users_page.HTML.erb上,我抓住了相应的文件:

<%= provIDe(:theme_style,"theme_styles/#{@user.style.style_filename_file_name}") %>@H_404_14@  

由于页面结构不会发生变化,因此重要的是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 / styleshseets中我放了application.CSS.sCSS(如果你不使用sass,只需要CSS)
这个文件有一个require self和我在所有网站上使用的一些mixins,但就是这样

*= require_self@H_404_14@  

展望未来,每个主题都有一个CSS文件夹,所有文件夹都有一个文件夹,每个文件夹都有一个清单(清单放在main / stylesheets文件夹中).它最终只是一个小工作来设置正确,但工作就像一个配置的魅力,没有更多的重叠或无关的CSS服务于具有不同主题的人,解决IE maximum selectors issues too.

更多细节

所有共享CSS的所有文件夹

/应用/资产/样式表/所有/

所以把你正在使用的任何CSS文件放在那里的所有主题.我把我的引导程序放在那里,但你可以把任何共享的CSS放在你想要的地方.那个的清单是……

*= require_self *= require_tree ./all@H_404_14@  

然后你的主题,每个主题与它自己的文件夹:

/应用/资产/样式/主题-1 /

它显而易见:

*= require_self   *= require_tree ./theme-1@H_404_14@  

所以你的第二个主题是相同的(文件夹名称和清单中的2个而不是1个).

使这些工作在资产管道

在您的production.rb文件中添加以下内容

config.assets.precompile += %w( application-all.CSS application-theme-1.CSS application-theme-2.CSS,etc.)@H_404_14@  

我将我的主题存储到客户端站点并动态提供,这也允许我在运行时更改.在我的一个控制器(或应用程序,如果这是一个站点范围设置):

class MyController < ApplicationController  layout :serve_layout...  def serve_layout    #do what you need to call your layout / theme...      end@H_404_14@  

希望这有助于其他人坚持这艘船.

总结

以上是内存溢出为你收集整理的ruby-on-rails-3.2 – Rails资产管道与主题全部内容,希望文章能够帮你解决ruby-on-rails-3.2 – Rails资产管道与主题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存