【问题标题】:uninitialized constant {model}Controller::Spreadsheet未初始化的常量 {model}Controller::Spreadsheet
【发布时间】:2015-08-12 14:23:09
【问题描述】:

我在 Rails (v2.0.0) 控制器代码中使用 Spreadsheet 类,如下所示:

def run
  book = Spreadsheet.open '--file path'
end

我收到“NameError: uninitialized constant {model}Controller::Spreadsheet”错误。电子表格 gem 已加载,我可以在 Rails 控制台中执行此特定行。
当我按照另一个 Stackflow 问题中的建议在控制器文件中添加 require 'spreadsheet' 时,我收到错误“无法加载模块”。根据我对 GEM 文件应该如何工作的理解,这是我唯一需要指定 gem 的地方。在我的 Gemfile 中,我有 gem 'spreadsheet' 并且我已经运行了 bundle install 那么为什么控制器代码不能使用电子表格 gem 呢?我错过了什么?

【问题讨论】:

    标签: ruby-on-rails excel


    【解决方案1】:

    我在 Rails 应用程序中使用电子表格没问题。

    你真的在使用 Rails v2.0.0 吗?

    我的应用必须处理 XLS 和 PDF 文件,所以我有以下设置:

    应用程序 > 构建器 > 文档 > xls_builder.rb

    然后在 xls_builder.rb 中

    require 'spreadsheet'
    module Documents
        module XlsBuilder
    
            def self.read_file path
                Spreadsheet.open path
            end
        end
    end
    

    当我想打开一个 xls 文件时,我只需引用 Documents::XlsBuilder 模块和里面的方法。

    问候

    保罗

    【讨论】:

    • 感谢您回来。我复制了你的确切代码。但是,我仍然遇到同样的错误。我通过以下方式调用该方法:book= Documents::XlsBuilder.read_file @rule.excel。在 Rails (v4.2.3) 控制台中,当我执行相同的命令时,我收到以下错误 LoadError: cannot load such file -- spreadsheet from /Users/gt/.rvm/gems/ruby-2.0.0-p643@kb/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in require'`,这表明 Rails 在尝试加载“电子表格” gem 时遇到问题。
    • 我正在使用 Ruby 2.0.0、Rails (4.2.3) 和电子表格 gem spreadsheet-1.0.4。我可以在 Rails 控制台中调用Documents::XlsBuilder.read_file -path-,但在控制器中执行似乎会使模块退出。
    • 应该是book= Documents::XlsBuilder::read_file @rule.excel。代码有效!谢谢。
    猜你喜欢
    • 2017-05-03
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多