theme_support: Rails 응용 에 theme 지원 추가
3992 단어 JavaScript일 하 다SVNcssRails
from LetRails by
yuanyi
theme_슈퍼 port 는 Matt McCray 레일 스 애플 리 케 이 션 에 Typo 와 유사 한 theme 관 리 를 추가 하 는 플러그 인 으로 Typo, 지원 liquid 과 erb 템 플 릿 과 유사 합 니 다.
설치 하 다.
$ script/plugin install http://mattmccray.com/svn/rails/plugins/theme_support
쓰다
1. 테마 생 성
$ script/generate theme [theme_name]
이것 은 Rails 응용 프로그램 과 디 렉 터 리 아래 themes 폴 더 를 만 듭 니 다:
app_root themes/ [theme_name] layouts/ <- layout .rhtml or .liquid templates images/ stylesheets/ javascripts/ views/ <- you can override application views about.markdown preview.png
2. 그리고 app / views 디 렉 터 리 에 있 던 템 플 릿 파일 을 themes / [theme name] / views 로 옮 기 고 layots 에 있 는 파일 도 템 플 릿 으로 옮 겨 야 합 니 다. 물론 관련 CSS, JS, 그림 등 도 있 습 니 다.
3. 테마 에 있 는 JS, CSS, 이미지 인용 을 다음 경로 로 변경 해 야 합 니 다.
Image: /theme/:theme_name/images/:image_file JS: /theme/:theme_name/javascripts/:image_file CSS: /theme/:theme_name/stylesheets/:image_file
erb 를 사용 하면 아래 helper 를 사용 할 수 있 습 니 다:
liquid 에 도 helper: themeitem 이 있 습 니 다.
다음 으로 변 환 됩 니 다:
4. 사용 할 테 마 를 지정 합 니 다:
class ApplicationController
layout 'fire'
theme 'demo'
end
filter 에서 현재 사용자 의 설정 에 따라 그 theme 를 동적 으로 결정 할 수 있 습 니 다.
class ApplicationController
before_filter :set_theme
def set_theme
theme current_user.theme
end
end
Rails 2.1
만약 당신 이 Rails 2.1 을 사용한다 면, 당신 은 일 을 좀 더 해 야 합 니 다.
1. 우선 routeset 수정ex. rb, draw 와 createtheme_routes 는 다음 과 같은 정의 로 바 뀌 었 습 니 다.
def draw
old_routes = @routes
@routes = []
begin
create_theme_routes
yield Mapper.new(self)
install_helpers
rescue
@routes = old_routes
raise
end
end
def create_theme_routes
# Added patch from D.J. Vogel that changes :filename to *filename … allowing sub-folders
add_named_route ‘theme_images’, “/themes/:theme/images/*filename”, :controller=>’theme’, :action=>’images’
add_named_route ‘theme_stylesheets’, “/themes/:theme/stylesheets/*filename”, :controller=>’theme’, :action=>’stylesheets’
add_named_route ‘theme_javascript’, “/themes/:theme/javascript/*filename”, :controller=>’theme’, :action=>’javascript’
add_route “/themes/*whatever”, :controller=>’theme’, :action=>’error’
end
2. 그리고 actionview 수정ex. rb, renderfile 을 다음 과 같이 정의 합 니 다.
def render_file(template_path, use_full_path = true, local_assigns = {})
["#{RAILS_ROOT}/themes/#{controller.current_theme}/views", # for normal views
"#{RAILS_ROOT}/themes/#{controller.current_theme}" # for layouts
].each do |prefix|
@finder.prepend_view_path(prefix)
end
__render_file(template_path, use_full_path, local_assigns)
end
3. 질문 이 있 으 면 댓 글 을 환영 합 니 다. 제 가 뭘 빠 뜨 렸 나 봐 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.