Rails 3.1和动态jquery ui-theme开关

时间:2011-09-30 07:36:10

标签: jquery ruby-on-rails

简短说明:

application.css

/*
 *= require_self
 *= require_tree .
 *= require vendor
*/

的application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .

和供应商/资产$ tree

.
└── stylesheets
    ├── ui-themes
    │   ├── smoothness
    │   │   ├── images
    │   │   │   ├── ui-bg_flat_0_aaaaaa_40x100.png
    │   │   │   ├── ui-bg_flat_75_ffffff_40x100.png
    │   │   │   ├── ui-bg_glass_55_fbf9ee_1x400.png
    │   │   │   ├── ui-bg_glass_65_ffffff_1x400.png
    │   │   │   ├── ui-bg_glass_75_dadada_1x400.png
    │   │   │   ├── ui-bg_glass_75_e6e6e6_1x400.png
    │   │   │   ├── ui-bg_glass_95_fef1ec_1x400.png
    │   │   │   ├── ui-bg_highlight-soft_75_cccccc_1x100.png
    │   │   │   ├── ui-icons_222222_256x240.png
    │   │   │   ├── ui-icons_2e83ff_256x240.png
    │   │   │   ├── ui-icons_454545_256x240.png
    │   │   │   ├── ui-icons_888888_256x240.png
    │   │   │   └── ui-icons_cd0a0a_256x240.png
    │   │   └── jquery-ui-1.8.16.custom.css
    │   └── trontastic
    │       ├── images
    │       │   ├── ui-bg_diagonals-small_50_262626_40x40.png
    │       │   ├── ui-bg_flat_0_303030_40x100.png
    │       │   ├── ui-bg_flat_0_4c4c4c_40x100.png
    │       │   ├── ui-bg_glass_40_0a0a0a_1x400.png
    │       │   ├── ui-bg_glass_55_f1fbe5_1x400.png
    │       │   ├── ui-bg_glass_60_000000_1x400.png
    │       │   ├── ui-bg_gloss-wave_55_000000_500x100.png
    │       │   ├── ui-bg_gloss-wave_85_9fda58_500x100.png
    │       │   ├── ui-bg_gloss-wave_95_f6ecd5_500x100.png
    │       │   ├── ui-icons_000000_256x240.png
    │       │   ├── ui-icons_1f1f1f_256x240.png
    │       │   ├── ui-icons_9fda58_256x240.png
    │       │   ├── ui-icons_b8ec79_256x240.png
    │       │   ├── ui-icons_cd0a0a_256x240.png
    │       │   └── ui-icons_ffffff_256x240.png
    │       └── jquery-ui-1.8.16.custom.css
    └── vendor.css.erb

然后我的问题是如何通过params [:theme]动态加载jquery主题css,我试过

/*
*= require "ui-themes/<%= params[:theme] %>/jquery-ui-1.8.16.custom"
*
*/
在vendor.css.erb中

,但不幸运。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  1. 解决方案,在您的css文件中包含所有可能的主题,但是将它们作为范围,即将所有规则嵌套在不同的主体ID(或类)下,例如 #theme-1 ui-widget-... { .. } 等等... 然后动态切换身体标签的id

  2. 解决方案为每个主题制作一个自己的css(每个主题还包括其他样式),将这些文件添加到config.assets.precompile中的config/environments/production.rb,禁用哈希缓存共享后缀(有一个问题在这里堆栈溢出怎么办)然后在服务器端(在您的布局中)通过param切换样式表