我有一个控制器:" /app/controllers/analyst/test_orders_controller.rb"。
在这个文件中我有:
class Analyst::TestOrdersController < ApplicationController
def new
@order = Order.new
end
end
但我有一个错误:
uninitialized constant Analyst::TestOrdersController::Order
但我不想使用Analyst::TestOrdersController::Order.new
,我只想使用Order.new
。它很奇怪。有什么问题?
答案 0 :(得分:3)
使用::Order.new
解释器在Analyst
模块名称空间下查找Order的定义,这是因为应用程序模型被懒惰加载,因此尚未读取文件models / order.rb。添加通用命名空间会告诉它在Rails路径中搜索定义。
确认这一点的方法是在Order模型体中添加一些随机函数调用,看看除非你明确调用:: Order,否则它不会被执行。
答案 1 :(得分:0)
尝试:
module Analyst
class TestOrdersController < ApplicationController
def new
@order = Order.new
end
end
end
我认为它与模块嵌套有关: https://cirw.in/blog/constant-lookup