我有一个应用程序我正在开始处理我需要处理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'
这是我的控制器和型号......
def import
Student.import(params[:file])
redirect_to root_url, notice: "Students imported."
end
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
任何建议都赞赏!
答案 0 :(得分:0)
观看Railscasts剧集时,他似乎已将open_spreadsheet
定义为Student
类中的类方法。您没有定义open_spreadsheet
方法,因此当您尝试调用它时,Ruby无法找到任何open_spreadsheet
方法。
在open_spreadsheet
课程中定义Student
方法,该错误应该消失。