ERbでSassファイルを前処理することができます。これにより、インスタンスコントローラまたはビュー内の変数は、.scss
ファイル内で設定します。ファイル自体は、アクションの一部としてコントローラによって表示される通常のビューとして扱うことができます。
このコードはテストされていませんが、開始する場所が必要です。ここでは、ユーザーのカラー設定をUser
モデルの一部として保存することを前提としています。あなたのレイアウトで "スタイルシート" に
# 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')
あなたのコントローラにアクションを定義
まずUsersController
上のカスタムアクションが定義されます。あなたはここで、ユーザの嗜好を取得するために、やりたいことができます:
# 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、構文::scss).render'が必要でした。他の賢明な答えは、もう一度ありがとう。 – MrDevin