[英]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.