我正在将rails项目从rails 2.3.5升级到rails 3.2
我有一些插件代码如下
module SpreadsheetOnRails
class Handler < ::ActionView::TemplateHandler
include ActionView::TemplateHandlers::Compilable
def compile(template)
%Q{controller.response.content_type ||= Mime::XLS
controller.headers["Content-Disposition"] = "attachment"
SpreadsheetOnRails::Base.new { |workbook| #{template.source} }.process}
end
end
class Base
@@temp_file = nil
def temp_file_path
unless @@temp_file
temp = Tempfile.new('spreadsheet-', File.join(RAILS_ROOT, 'tmp') )
@@temp_file = temp.path
temp.close
end
@@temp_file
end
def initialize
yield workbook
end
def workbook
@workbook ||= Spreadsheet::Workbook.new
end
def process
workbook.write(temp_file_path)
File.open(temp_file_path, 'rb') { |file| file.read }
end
end
end
在运行rails时我遇到以下错误:
未初始化的常量ActionView :: TemplateHandler(NameError)
任何人请帮助如何重新编码此方法,以便它可以兼容rails 3.2
答案 0 :(得分:0)
ActionView::TemplateHandler
被弃用。
http://apidock.com/rails/ActionView/TemplateHandler
这意味着TemplateHandler
类中的所有功能都已删除或移动到Rails 3.2中的其他类。您将不得不删除引用,因为它已不再定义。
在Rails 2.3.5中查看actionpack/lib/action_view/template_handler.rb
。它将帮助您识别在Rails 3.2中需要跟踪的任何功能。