ActiveView :: Template :: Error(未初始化的常量CustomBreadcrumbsBuilder)

时间:2016-09-10 10:55:00

标签: ruby-on-rails ruby ruby-on-rails-5

我正在使用名为breadcrumbs_on_rails的gem,为了使用此gem的视图,我在CustomBreadcrumbsBuilder目录中创建了一个名为lib/的类作为研究员:

class CustomBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
  def render
    @context.render "/layouts/breadcrumbs", elements: @elements
  end
end

我在application.html.haml文件中使用此类以下列方式呈现布局:

%main
  = render_breadcrumbs builder: ::CustomBreadcrumbsBuilder

它在开发环境中成功加载文件,但在生产中,它产生以下错误:

ActionView::Template::Error (uninitialized constant CustomBreadcrumbsBuilder):

我尝试了以下事项:

我的config/application.rb添加了以下内容:

config.autoload_paths += %W(#{config.root}/lib/)

config.autoload_paths << "#{Rails.root}/lib"

但没有一件事能奏效。同样,它在开发模式下工作,但在生产中失败。

我使用Rails 5.0.0和ruby 2.2.3,在制作时,我使用Puma和Nginx来处理请求。

1 个答案:

答案 0 :(得分:0)

我仍然不知道确切的答案,但我认为autoload_paths在加载视图文件后被加载,因此Rails无法找到application.html.haml中使用的常量并在{ {1}}目录。所以我使用了以下内容:

lib/

毫无疑问,它现在正在运作。

我找到的另一个解决方案是直接在视图文件中要求相应的文件,就像我在config.eager_load_paths += %W(#{config.root}/lib/) 中添加了以下行:

application.html.haml

它也有效。