首页 > 解决方案 > 在 Rails 6 中访问 ApplicationController.render 中的助手

问题描述

我正在使用 Sprockets 预处理器为我的应用程序生成静态 HTML 错误页面:

ApplicationController.renderer
  .new({
    http_host: 'myhost',
    https: Rails.env != 'development'
  })
    .render({
      inline: asset[:data],
      layout: 'layouts/error_page'
    })

HTML 来自 via asset[:data],并且我使用error_page布局渲染它。这在 Rails 5 中没有问题,但是自从升级到 6 后,如果我的自定义辅助方法位于渲染的内联部分,则它们都无法访问:

NameError: undefined local variable or method `my_custom_helper' for #<#<Class:0x00000000061b2758>:0x00007fe24c03bc28>

但是,如果它们在布局中,它们确实可以工作,知道我缺少什么吗?

标签: ruby-on-railsruby-on-rails-6

解决方案


内联文件是.html.erb,将它们重命名.html为足以让它与 Rails 6 一起使用。 NameError 发生在预处理器甚至被调用之前,我猜 Sprockets 试图在它之前解析 ERB。


推荐阅读