SassファイルはERbで前処理できます。これにより、コントローラーに設定されたインスタンス変数またはファイル内のビューを使用できるようになり.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;
}
必要に応じて適応させます。