小编use*_*788的帖子

在实例化类时,Rails未初始化为常量

我在app/datatables的文件夹结构下的Rails应用程序中创建了一个新类

该类保存在此目录的文件中,并保存为DatasetIndexDatatable.rb

类文件的内容如下:

class DatasetIndexDatatable
  delegate :params, :h, :link_to, :number_to_currency, to: :@view

  def initialize(view)
    @view = view
  end

end
Run Code Online (Sandbox Code Playgroud)

当我尝试从我的应用程序中的控制器实例化此类时,Rails给出错误:

uninitialized constant DatadescriptionController::DatasetIndexDatatable
Run Code Online (Sandbox Code Playgroud)

尝试实例化新类的控制器中的代码如下:

class DatadescriptionController < ApplicationController
  layout "datadescription"

  def index
respond_to do |format|
        format.html
        format.json { render json: DatasetIndexDatatable.new(view_context) }
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

为什么Rails不能看到新类?我尝试将包含该类的文件夹添加到application.rb中的config.autoload_paths变量中:

config.autoload_paths += %W(#{config.root}/lib
                            #{config.root}/datatables)
Run Code Online (Sandbox Code Playgroud)

但是会发生同样的错误.我还尝试使用全局命名空间在控制器中实例化新类:

format.json { render json: ::DatasetIndexDatatable.new(view_context) }
Run Code Online (Sandbox Code Playgroud)

并使用类的包含文件夹作为命名空间:

format.json { render json: Datatables::DatasetIndexDatatable.new(view_context) }
Run Code Online (Sandbox Code Playgroud)

一切都无济于事.我究竟做错了什么?

ruby ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
6471
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1