测试的未定义方法`new’:模块

您好我有一个命名空间冲突的问题。 我有一个模型:测试和控制器TestsController。 服务器显示错误

undefined method `new' for Test:Module 

我读了这个问题的rails模型

在模块UserTest中添加到模型Test中

 module UserTest class Test < ActiveRecord::Base .... end end 

并添加到控制器

 class TestsController < ApplicationController def new @test = UserTest::Test.new @test.questions.build @title = "New test" end ... end 

服务器显示错误: uninitialized constant TestsController::UserTest

阅读更多后,我意识到可能需要添加require或包含一个控制器。 只有我不明白该怎么做。 请告诉我。

Rails中的约定是转换文件中的类名和目录中的模块名。 因此,如果将UserTest :: Test类放在app / model目录中的test.rb文件中,则自动加载无法获取您的类。 因为在app/model/user_test/test.rb文件上搜索。

因此,您可以通过在文件顶部添加require来“强制”控制器中的require。 如果你把你的课程放在test.rb中,则require 'test.rb'

要知道如何定义您的需求是认为应用程序的LOAD_PATH添加app/model目录。 因此,所有内部都可以通过要求目录名称和文件名直接添加。

切勿将模型重命名为项目的同名。 您将收到如下消息:

 undefined method `new' for Example:Module 

项目模块优先级在呼叫之前。