1

Rails 3.1アプリに取り組んでおり、cssを動的にコンパイルするためのソリューションが必要です。私のアプリでは、ユーザーが色を設定できるようにしており、すべての色を制御する1つのSCSSファイルで「ライブコンパイル」を条件付きで使用したいのですが、他のすべてのSCSSファイルはまだプリコンパイルする必要があります。続行する方法に困惑しました。どんな提案も役に立ちます。

事前にすべてのアイデアに感謝します。

デヴィン

ps-SCSSでもインスタンス変数を使用する必要があることにも言及する必要があります。

4

1 に答える 1

1

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;
}

必要に応じて適応させます。

于 2012-03-06T14:11:45.187 に答える