我正在开发 Rails 3.1 应用程序,需要一个动态编译 css 的解决方案。在我的应用程序中,我允许用户设置颜色,并希望有条件地在一个控制所有颜色的 SCSS 文件上使用“实时编译”,我的所有其他 SCSS 文件仍然需要预编译。经过一番搜索后,我不知道如何进行。任何建议都会有所帮助。
在此先感谢您的所有想法。
德文
ps - 我还应该提到我还需要在 SCSS 中使用实例变量。
我正在开发 Rails 3.1 应用程序,需要一个动态编译 css 的解决方案。在我的应用程序中,我允许用户设置颜色,并希望有条件地在一个控制所有颜色的 SCSS 文件上使用“实时编译”,我的所有其他 SCSS 文件仍然需要预编译。经过一番搜索后,我不知道如何进行。任何建议都会有所帮助。
在此先感谢您的所有想法。
德文
ps - 我还应该提到我还需要在 SCSS 中使用实例变量。
您可以使用 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;
}
根据需要进行调整。