ERb로 Sass 파일을 사전 처리 할 수 있습니다. 그러면 인스턴스를 사용할 수 있습니다. 변수는 컨트롤러 또는보기에서 .scss
파일 내에 설정됩니다. 파일 자체는 정상적인보기로 취급되어 컨트롤러가 작업의 일부로 렌더링 할 수 있습니다.
이 코드는 테스트되지 않았지만 시작할 장소를 제공해야합니다. 사용자의 색상 환경 설정을 User
모델의 일부로 저장한다고 가정합니다.
첫 번째는 UsersController
에 사용자 지정 작업을 정의
# config/routes.rb
match '/users/:id/styles' => 'users#styles', :as => :user_styles
링크를 레이아웃의 "스타일"을 :
# app/views/layouts/application.html.erb
= stylesheet_link_tag 'application', user_styles_path(current_user, :format => 'css')
는 컨트롤러의 동작을 정의합니다. 당신은 당신이 여기에 사용자의 기본 설정을 검색 할 수 원하는대로 할 수있는 :
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def styles
@colors = User.find(params[:id]).colors
end
end
그 조치는 자동으로이보기를 렌더링 : 필요에 따라
# app/views/users/styles.css.scss.erb
$background-color: <%= @colors[:background] %>;
body {
background-color: $background-color;
}
는 적응.
끝내 주셔서 감사합니다. – MrDevin
안녕하세요. 문제가 없다면 [대답 수락] (http://stackoverflow.com/faq#howtoask)을 확인하십시오. – Brandan
제 컨트롤러에서 scss를 렌더링하기 위해'render : text => Sass :: Engine.new (render_to_string, syntax : : scss) .render'가 필요했습니다. 다른 현명한 대답, 감사합니다. – MrDevin