首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅为Rails中的一个文件编译活资产

仅为Rails中的一个文件编译活资产
EN

Stack Overflow用户
提问于 2013-02-21 18:36:05
回答 2查看 390关注 0票数 1

config.assets.compile=true参数,它支持所谓的“实时编译”。我需要Rails在活模式下在每个请求上编译一个特定的资产(sample.css.scss.erb),但是其余的资产仍然应该被预编译。我怎样才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-21 18:49:06

选项1-将sample.css.scss.erb放在与config.assets.manifest (default="public/assets")不同的路径中,并将其添加到javascript_include_tag

选项2-将其从config.assets.precompile中删除

代码语言:javascript
复制
config.assets.precompile -= %w( sample.css.scss.erb )

确保您清理,然后预编译来测试它。

我没有测试任何一个选项,请让我们知道是否对您有用。

票数 1
EN

Stack Overflow用户

发布于 2017-02-25 12:50:23

当.css.erb文件对css进行预处理时,需要对文件进行实时编译。它意味着动态编译css。

例如:允许用户设置颜色,并希望有条件地使用“实时编译”。

在这种情况下,我将建议动态地呈现/user/:id.css.erb,而不是实时编译。

原因可能有数百万用户,在生产环境中使用Ec2实例将花费您更多的时间。这就是为什么我会建议下面的解决方案:

首先在UsersController上定义自定义操作

代码语言:javascript
复制
# config/routes.rb
match '/users/:id/styles' => 'users#styles', :as => :user_styles

链接到布局中的“样式表”:

代码语言:javascript
复制
# app/views/layouts/application.html.erb
= stylesheet_link_tag 'application', user_styles_path(current_user, :format => 'css')

在控制器中定义操作。您可以在这里做任何想要检索用户首选项的操作:

代码语言:javascript
复制
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def styles
    @colors = User.find(params[:id]).colors
  end
end

该操作将自动呈现此视图:

代码语言:javascript
复制
# app/views/users/styles.css.scss.erb
$background-color: <%= @colors[:background] %>;

body {
  background-color: $background-color;
}

更多的想法和建议是最受欢迎的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15009799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档