繁体   English   中英

导轨中的模块和型号名称混乱

[英]Confusion with module and model name in rails

我在项目中为Customer实施了完整的CRUD系统。 customers_controller.rb的路径是

app/controllers/admin/customers_controller.rb

最重要的是,我必须添加新功能,因此我创建了一个新的控制器feature_controller.rb (名称已更改),其文件路径如下所示

app/controllers/admin/customer/features_controller.rb

控制器内部的代码

module Admin
  module Customer
    class FeatureController < ApplicationController
      def index; end
    end
  end
end

因此,它在一定程度上影响了我的旧功能,因为当我通常创建客户时,它会报告此错误:

NoMethodError (undefined method `new' for Admin::Customer:Module):
  app/controllers/admin/customers_controller.rb:21:in `create'

行号21是:

@customer = Customer.new customer_params
if @customer.save
....

然后,我也删除了新的控制器和文件夹,但仍然是相同的错误。

我在binding.pry查看了Customer类的类型,并说这是一个Module

更新 development.rb

  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

application.rb

config.autoload_paths += %W(#{config.root}/lib)
    config.autoload_paths += Dir["#{config.root}/lib/**/*"].select{|f| File.directory? f}

使用恒定分辨率运算符( ::

@customer = ::Customer.new customer_params

会为您解决此问题,因为这样您可以告诉Rails在当前范围之外寻找Customer常量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM