加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:库模块和一组控制器的名称相同?

发布时间:2020-12-17 03:05:43 所属栏目:百科 来源:网络整理
导读:我正在组织我的代码,到目前为止,我已经成功地设置了文件夹“admin”中的groupcontrollers / helpers / views,但我曾经最初拥有一个具有相同模块名称“admin”的库,我不是能够再打电话了. (姓名冲突?) 新结构: Directory Structure - app - controllers - a
我正在组织我的代码,到目前为止,我已经成功地设置了文件夹“admin”中的groupcontrollers / helpers / views,但我曾经最初拥有一个具有相同模块名称“admin”的库,我不是能够再打电话了. (姓名冲突?)

新结构:

Directory Structure
  -> app
    -> controllers 
      -> admin #new
        -> admin_main
        -> admin_permissions

    -> Helpers
      -> admin #new
        -> admin_main_helper
        -> admin_permissions_helper

  -> lib
    -> admin
      -> pagerduty.rb

我以前能够从我的助手那里打电话给我的图书馆,如下所示:

module Admin::AdminMainHelper #admin:: is new
  require "./lib/admin/pagerduty.rb"

  def pager_duty
    pagerduty = Admin::PagerDuty.new() #throws error after the new structure
    @on_call = pagerduty.first_on_call()
    @counts = pagerduty.open_incidents()
  end

end

错误是“未初始化的常量Admin :: PagerDuty”

我是否必须将我的库重命名为其他内容?或者有办法解决这个问题吗?

编辑:
如果我将库模块重命名为“AdminLib”而不是“Admin”,它可以工作.所以问题是如果有办法解决这个问题.

解决方法

我认为问题在于加载路径.我认为要求应该是:

require "#{Rails.root}/lib/admin/pagerduty.rb"

另一个解决方案,虽然有点重,但是要加载LOAD_PATH中的所有lib子目录,例如:

在config.autoload_path的application.rb中:

config.autoload_paths += Dir["#{config.root}/lib/**/"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读