首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveView::Template::Error (未初始化常量CustomBreadcrumbsBuilder )

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

Stack Overflow用户
提问于 2016-09-10 18:55:00
回答 1查看 1K关注 0票数 1

我正在使用一个名为breadcrumbs_on_rails的gem,并且为了使用这个gem的视图,我在我的lib/目录中创建了一个名为:CustomBreadcrumbsBuilder的类作为fellows:

代码语言:javascript
复制
class CustomBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
  def render
    @context.render "/layouts/breadcrumbs", elements: @elements
  end
end

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

代码语言:javascript
复制
%main
  = render_breadcrumbs builder: ::CustomBreadcrumbsBuilder

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

代码语言:javascript
复制
ActionView::Template::Error (uninitialized constant CustomBreadcrumbsBuilder):

我尝试了以下几种方法:

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

代码语言:javascript
复制
config.autoload_paths += %W(#{config.root}/lib/)

代码语言:javascript
复制
config.autoload_paths << "#{Rails.root}/lib"

但所有这些都不起作用。同样,它在开发模式下工作,但在生产模式下失败。

我使用的是Rails 5.0.0和ruby 2.2.3,在生产环境中,我使用Puma和Nginx来满足请求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-11 05:22:56

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

代码语言:javascript
复制
config.eager_load_paths += %W(#{config.root}/lib/)

毫无疑问,它现在起作用了。

我找到的另一个解决方案是要求视图文件中直接包含相应的文件,就像我在application.html.haml中添加了以下代码行一样

代码语言:javascript
复制
require '/home/arslanali/personalproject/lib/custom_breadcrumbs_builder.rb'

而且它也起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39425319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档