ale*_*hka 3 ruby-on-rails ruby-on-rails-3
您好我有一个命名空间冲突的问题.我有一个模型:测试和控制器TestsController.服务器显示错误
undefined method `new' for Test:Module
Run Code Online (Sandbox Code Playgroud)
我读过这个问题的rails模型
在模块UserTest中添加到模型Test中
module UserTest
class Test < ActiveRecord::Base
....
end
end
Run Code Online (Sandbox Code Playgroud)
并添加到控制器
class TestsController < ApplicationController
def new
@test = UserTest::Test.new
@test.questions.build
@title = "New test"
end
...
end
Run Code Online (Sandbox Code Playgroud)
服务器显示错误: uninitialized constant TestsController::UserTest
阅读更多后,我意识到可能需要添加require或包含一个控制器.只有我不明白该怎么做.请告诉我.
Osw*_*ira 11
切勿将模型重命名为项目的同名.您将收到如下消息:
undefined method `new' for Example:Module
Run Code Online (Sandbox Code Playgroud)
项目模块优先级在呼叫之前.
Rails中的约定是在文件中转换您的类名称,在目录中转换您的模块名称。因此,如果将UserTest :: Test类放在app / model目录的test.rb文件中,则自动加载将无法获取您的类。因为搜索app/model/user_test/test.rb文件。
因此,您可以通过在文件顶部添加需求来“强制”控制器中的需求。如果将类放在test.rb中,则要求是:require 'test.rb'
知道如何定义您的需求就是认为您的应用程序的添加app/model目录的LOAD_PATH 。因此,可以通过要求目录名称和文件名直接添加所有内部内容。
| 归档时间: |
|
| 查看次数: |
11350 次 |
| 最近记录: |