有config.assets.compile = true参数可启用所谓的“实时编译”。 我需要Rails在实时模式下为每个请求编译一个特定的资源(sample.css.scss.erb),但其余资源应该仍然是预编译的。 我该如何做到这一点?仅针对Rails中的一个文件编译实况资产
1
A
回答
1
选项1 - 把sample.css.scss.erb
从config.assets.manifest (default="public/assets")
不同的路径,并与javascript_include_tag
选项2添加它 - 从config.assets.precompile删除它
config.assets.precompile -= %w(sample.css.scss.erb)
确保清洁,然后以预编译测试它。
我没有测试任何选项,请让我们知道,如果有任何适合你的作品。
0
当通过.css.erb文件预处理css时,需要实时编译文件。 它意味着动态编译CSS。
例如:允许用户设置的颜色和希望有条件使用“活汇编”
在这种情况下,我会建议动态渲染,而不是活编译/users/:id/styles.css.erb 。
可能有数百万用户的原因,并且在使用Ec2实例的生产环境中会花费更多。这就是为什么我会建议以下解决方案:
首先定义在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;
}
更多的想法和suggetions者居多。
相关问题
- 1. Rails资产:仅预编译一项资产?
- 2. rails资产没有被编译到一个文件中?
- 3. rake资产:针对特定JS文件的预编译
- 4. 未针对Rails资产编译CSS样式
- 5. Rails 3&Heroku资产编译
- 6. Rails 3.1资产预编译
- 7. Rails 3.2资产:预编译
- 8. Rails:生产资产:预编译错误
- 9. 仅针对单个函数/文件启用编译器优化
- 10. 的Rails:资产预编译失败
- 11. Rails的3.2 - 不能预编译资产
- 12. Rails - 预编译资产上的RoutingError
- 13. 错误编译CSS资产指南针
- 14. Rails 3.1资产管道:编译文件的位置在哪里?
- 15. 仅针对图片禁用Rails 3.1资产管道?
- 16. Rails资产管道 - 编译jQuery UI资产的问题
- 17. 资产管道只编译JavaScript文件
- 18. Rails 3.1资产预编译 - 包含所有javascript文件
- 19. Rails资产编译不正确
- 20. Rails资产预编译:Segmentation Fault + Ruby 1.9.3p392
- 21. Rails预编译资产本地错误
- 22. Rails 3.1资产预编译问题
- 23. rails/capistrano - 错误编译资产
- 24. Rails预编译供应商/资产
- 25. 资产预编译
- 26. Capistrano编译资产错误 - 资产:预编译:nondigest?
- 27. 在Rails 3.1资产管道中自定义编译后的文件名
- 28. Rails忽略S3中的预编译资产,“找不到文件”bootstrap'“
- 29. 资产预编译后的Rails 3.1 javascript停止工作;生产
- 30. 力HTTP而不是仅仅针对一个特定的文件