1

我正在开发 Rails 3.1 应用程序,需要一个动态编译 css 的解决方案。在我的应用程序中,我允许用户设置颜色,并希望有条件地在一个控制所有颜色的 SCSS 文件上使用“实时编译”,我的所有其他 SCSS 文件仍然需要预编译。经过一番搜索后,我不知道如何进行。任何建议都会有所帮助。

在此先感谢您的所有想法。

德文

ps - 我还应该提到我还需要在 SCSS 中使用实例变量。

4

1 回答 1

1

您可以使用 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;
}

根据需要进行调整。

于 2012-03-06T14:11:45.187 回答