aku*_*001 9 ruby ruby-on-rails
我有一个包含辅助类的文件,如下所示:
应用程序/类/ myfile.rb
Module mymodule
class myclass
# blah blah
end
end
Run Code Online (Sandbox Code Playgroud)
我想在控制器中使用这个类,所以我写了这样的东西:
require 'myfile'
class MyController < ApplicationController
include mymodule
def index
mymodule::myclass.new
end
end
Run Code Online (Sandbox Code Playgroud)
控制器的路由定义如下:
match 'mycontroller', :to => 'mycontroller#index'
Run Code Online (Sandbox Code Playgroud)
现在我面对的是奇怪的行为.它在服务器启动后的第一次运行时完美运行.但是当我刷新页面或再次点击URL时,我收到以下错误.
Routing Error
uninitialized constant MyController::mymodule
Run Code Online (Sandbox Code Playgroud)
我无法从错误中找出任何东西,也不能理解为什么它从第二次打击起不起作用.发生了什么?
一般来说,Rails喜欢看到包含以下内容的文件:
module MyModule
Run Code Online (Sandbox Code Playgroud)
命名 my_module.rb
模块通常是大写的
此外,它认为MyModule是在MyController类的范围内,但它不是.你可以试试
include ::MyModule
Run Code Online (Sandbox Code Playgroud)
从顶级范围访问它.
我也不知道你的加载路径是否包含你的类目录,因此它可能不会首先自动加载myfile.rb文件.
归档时间: |
|
查看次数: |
10088 次 |
最近记录: |