我正在使用 Sprockets 预处理器为我的应用程序生成静态 HTML 错误页面,如下所示:
ApplicationController.renderer
.new({
http_host: 'myhost',
https: Rails.env != 'development'
})
.render({
inline: asset[:data],
layout: 'layouts/error_page'
})
HTML 通过asset[:data]
进入,我用error_page
布局渲染它。这在 Rails 5 中没有问题,但自从升级到 6 后,如果它们位于渲染的内联部分,则无法访问我的自定义帮助程序方法:
NameError: undefined local variable or method `my_custom_helper' for #<#<Class:0x00000000061b2758>:0x00007fe24c03bc28>
不过,如果它们在布局中,它们确实有效,知道我错过了什么吗?
> 内联文件是.html.erb
的,将它们重命名为.html
足以让它与Rails 6一起工作。NameError 发生在调用预处理器之前,我猜 Sprockets 正在尝试在它之前解析 ERB。