我正在使用名为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来处理请求。
答案 0 :(得分:0)
我仍然不知道确切的答案,但我认为autoload_paths
在加载视图文件后被加载,因此Rails无法找到application.html.haml
中使用的常量并在{ {1}}目录。所以我使用了以下内容:
lib/
毫无疑问,它现在正在运作。
我找到的另一个解决方案是直接在视图文件中要求相应的文件,就像我在config.eager_load_paths += %W(#{config.root}/lib/)
中添加了以下行:
application.html.haml
它也有效。