sam*_*mms 4 ruby-on-rails sass
我正在使用 Sass::Engine 动态编译 css 文件,我需要将环境和加载路径传递给链轮。这在开发中工作得很好:
def compile_scss
view_context = ActionView::Base.new
environment = Rails.application.assets
# body and filename are instance variables created elsewhere
@compiled_file = Sass::Engine.new(body,
filename: filename,
syntax: :scss,
cache: false,
load_paths: environment.paths,
sprockets: {
context: view_context,
environment: environment
}).render
end
Run Code Online (Sandbox Code Playgroud)
但在生产中失败,因为Rails.application.assets
是nil
。生产中的等价物是什么?
Rails.application.assets 总是nil
在生产中,因为资产是预编译的,并从公共文件夹提供(感谢@bkunzi01)。此外,Sprockets 只需要传递给它的资产路径即可运行,而不是环境。路径可从Rails.application.config.assets.paths
. 我能够使用以下方法让我的样式表编译器工作。
def compile_scss
view_context = ActionView::Base.new
environment = Rails.application.assets || Rails.application.config.assets
# body and filename are instance variables created elsewhere
@compiled_file = Sass::Engine.new(body,
filename: filename,
syntax: :scss,
cache: false,
load_paths: environment.paths,
sprockets: {
context: view_context,
}).render
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1204 次 |
最近记录: |