Rails roo gem和undefined方法`open_spreadsheet'

时间:2014-02-27 17:24:24

标签: ruby-on-rails ruby-on-rails-3

我有一个应用程序我正在开始处理我需要处理csv的地方。我使用Ryan Bates http://railscasts.com/episodes/396-importing-csv-and-excel作为指导。我能够从github下载他的应用程序并进行实验。现在我正在尝试创建自己的。我已经准备好了所有的基本代码但是我收到了错误......

 NoMethodError in StudentsController#import

undefined method `open_spreadsheet' for #<Class:0x9b7c1f0>

Rails.root: /home/user/railsApps/t4
Application Trace | Framework Trace | Full Trace

app/models/student.rb:5:in `import'
app/controllers/students_controller.rb:12:in `import'

这是我的控制器和型号......

的应用程序/控制器/ students_controller.rb

  def import
    Student.import(params[:file])
    redirect_to root_url, notice: "Students imported."
  end

的应用程序/模型/ student.rb

class Student < ActiveRecord::Base
  # attr_accessible :title, :body
  def self.import(file)
    spreadsheet = open_spreadsheet(file)
    header = spreadsheet.row(1)
    (2..spreadsheet.last_row).each do |i|
      row = Hash[[header, spreadsheet.row(i)].transpose]
      student = find_by_id(row["id"]) || new
      student.attributes = row.to_hash.slice(*accessible_attributes)
      puts student.inspect
    end
  end
end

任何建议都赞赏!

1 个答案:

答案 0 :(得分:0)

观看Railscasts剧集时,他似乎已将open_spreadsheet定义为Student类中的类方法。您没有定义open_spreadsheet方法,因此当您尝试调用它时,Ruby无法找到任何open_spreadsheet方法。

open_spreadsheet课程中定义Student方法,该错误应该消失。