`
xxj
  • 浏览: 434745 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[Rails 常用插件简介]Theme Support

阅读更多
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

    **Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...

    ruby on rails 常用插件下载

    在这个“ruby on rails 常用插件下载”中,提到的是一个与多线程相关的插件,可能用于提高应用程序的性能和并发处理能力。 在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的...

    VIM的Rails编辑插件rails.vim.zip

    rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...

    Ruby on Rails插件

    Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。Rails插件允许开发人员自定义和增强Rails的任何部分,并且能够以封装和重用的方式与其他开发者共享。...

    rails 2.0.2 分页 需另外下载插件

    这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`是Rails社区中非常流行的一个分页解决方案,它提供了简洁的API和强大的功能...

    eclipse的ruby on rails开发插件RadRails

    **Ruby on Rails 开发环境构建:Eclipse与RadRails 插件详解** 在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大...

    Rails3常用命令行命令

    在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个Rails项目是开发的起点。你可以使用以下命令创建一个新的工程: ```bash rails new 工程名 ``` 这会生成一个包含所有...

    关于Rails登录和验证插件http_authentication restful-authentication

    6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb是Rails初始化脚本,负责加载插件。 7. **版本控制(.svn)**: 这个文件可能表示插件曾使用Subversion作为版本控制系统。现代项目更...

    Rails插件收集

    在博文“Rails插件收集”中,作者可能分享了一些常用的Rails插件,比如用于日志分析的`better_errors`和`binding_of_caller`,性能监控的`bullet`,自动化测试的`rspec-rails`,以及数据库查询优化工具`annotate`等...

    常用RAILS学习网站

    收集了常用RAILS学习的网址 收集了常用RAILS学习的网址

    ruby on rails for eclipse开发插件

    ruby on rails for eclipse开发插件

    rails_admin_theme:rails_admin主题平面主题

    RailsAdmin Rollincode主题 默认引导程序3 rails_admin主题的现代替代。 它提供新闻颜色,调整和全新的树状视图菜单。 您可以将其派生并根据需要更改variables.scss !...ENV [ 'RAILS_ADMIN_THEME' ] = 'r

    awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版.zip

    Awesome Rails Gem 是一个广泛收录了Rails开发中常用、实用、有趣的Gem的列表,旨在帮助开发者提高开发效率和代码质量。这个中文版的Awesome Rails Gem列表,为国内开发者提供了一个方便的参考资源,使他们能够更好...

    Ruby on Rails 入门级简介

    ### Ruby on Rails 入门级简介 #### 一、Ruby on Rails 概述 **Ruby on Rails**(简称 Rails 或 RoR)是一种基于 Ruby 语言的 Web 应用框架,它采用了模型-视图-控制器(MVC)架构模式。Rails 由 David Heinemeier...

Global site tag (gtag.js) - Google Analytics