Theme Support 是一个支持多皮肤的插件,是从typo中抽取出来的
一:安装
千篇一律:(
ruby script/plugin install [url]http://mattmccray.com/svn/rails/plugins/theme_support[/url]
二:使用
/vendor/plugins/theme_support/lib/patches/routeset_ex.rb 不能正常执行,需要稍作修改
1:修改
/vendor/plugins/theme_support/init.rb
去掉
require 'patches/routeset_ex'
然后在你的/config/routes.rb适当的地方添加如下的代码:
map.theme_images "/themes/:theme/images/*filename", :controller=>'theme', :action=>'images'
map.theme_stylesheets "/themes/:theme/stylesheets/*filename", :controller=>'theme', :action=>'stylesheets'
map.theme_javascript "/themes/:theme/javascript/*filename", :controller=>'theme', :action=>'javascript'
2:生成新的theme
ruby script/generate theme default
生成如下目录
[attachimg]238[/attachimg]
预览图:
/themes/default/images/preview.png
说明
/themes/default/about.markdown
你的rhtml文件按在app/views中的布局在 themes/${theme_name}/views 放置即可
在controller中,我们可以写如下:
class UsersController < ApplicationController
layout 'default'
theme :initialize_user_theme
def initialize_user_theme
"default" unless login?
current_user.theme
end
end
三:原理
其实很简单,theme support改变了模板加载的顺序
def render_file(template_path, use_full_path = true, local_assigns = {})
search_path = [
"../themes/#{controller.current_theme}/views", # for components
"../../themes/#{controller.current_theme}/views", # for normal views
"../../themes/#{controller.current_theme}", # for layouts
"../../../themes/#{controller.current_theme}/views", # for mailer views
".", # fallback
".." # Mailer fallback
]
end
对于不同的css,images,js就是我们刚刚在routes中添加的三行代码来实现的
class ThemeController < ActionController::Base
def stylesheets
render_theme_item(:stylesheets, params[:filename].to_s, params[:theme], 'text/css')
end
def javascript
render_theme_item(:javascript, params[:filename].to_s, params[:theme], 'text/javascript')
end
def images
render_theme_item(:images, params[:filename].to_s, params[:theme])
end
render_theme_item
send_file "#{Theme.path_to_theme(theme)}/#{type}/#{file}", :type => mime, :disposition => 'inline', :stream => false
好了,好像没什么好说的,any question?
分享到:
相关推荐
**Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...
在这个“ruby on rails 常用插件下载”中,提到的是一个与多线程相关的插件,可能用于提高应用程序的性能和并发处理能力。 在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的...
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...
Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。Rails插件允许开发人员自定义和增强Rails的任何部分,并且能够以封装和重用的方式与其他开发者共享。...
这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`是Rails社区中非常流行的一个分页解决方案,它提供了简洁的API和强大的功能...
**Ruby on Rails 开发环境构建:Eclipse与RadRails 插件详解** 在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大...
在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个Rails项目是开发的起点。你可以使用以下命令创建一个新的工程: ```bash rails new 工程名 ``` 这会生成一个包含所有...
6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb是Rails初始化脚本,负责加载插件。 7. **版本控制(.svn)**: 这个文件可能表示插件曾使用Subversion作为版本控制系统。现代项目更...
在博文“Rails插件收集”中,作者可能分享了一些常用的Rails插件,比如用于日志分析的`better_errors`和`binding_of_caller`,性能监控的`bullet`,自动化测试的`rspec-rails`,以及数据库查询优化工具`annotate`等...
收集了常用RAILS学习的网址 收集了常用RAILS学习的网址
ruby on rails for eclipse开发插件
RailsAdmin Rollincode主题 默认引导程序3 rails_admin主题的现代替代。 它提供新闻颜色,调整和全新的树状视图菜单。 您可以将其派生并根据需要更改variables.scss !...ENV [ 'RAILS_ADMIN_THEME' ] = 'r
Awesome Rails Gem 是一个广泛收录了Rails开发中常用、实用、有趣的Gem的列表,旨在帮助开发者提高开发效率和代码质量。这个中文版的Awesome Rails Gem列表,为国内开发者提供了一个方便的参考资源,使他们能够更好...
### Ruby on Rails 入门级简介 #### 一、Ruby on Rails 概述 **Ruby on Rails**(简称 Rails 或 RoR)是一种基于 Ruby 语言的 Web 应用框架,它采用了模型-视图-控制器(MVC)架构模式。Rails 由 David Heinemeier...