Module: SpreadsheetRails::SpreadsheetRailsHelper
- Defined in:
- lib/spreadsheet_rails.rb
Instance Method Summary collapse
-
#render_io(writer) ⇒ Object
Renders to a string any object that will #write to an IO object.
-
#spreadsheet_document(workbook = nil, options = {}) ⇒ Object
Render a new or existing spreadsheet workbook.
Instance Method Details
#render_io(writer) ⇒ Object
Renders to a string any object that will #write to an IO object
37 38 39 40 41 |
# File 'lib/spreadsheet_rails.rb', line 37 def render_io(writer) StringIO.new.tap do |io| writer.write(io) end.string end |
#spreadsheet_document(workbook = nil, options = {}) ⇒ Object
Render a new or existing spreadsheet workbook
Pass an instance of Spreadsheet::Workbook to render it directly
Valid options:
:filename: sent to client in the Content-Disposition header
:renderer: subclass of Spreadsheet::Workbook to use, defaults to Spreadsheet::Workbook
:io: optional IO object pass to Spreadsheet::Workbook#initialize
Yields the workbook object unless a spreadsheet instance is given
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/spreadsheet_rails.rb', line 17 def spreadsheet_document(workbook = nil, = {}) filename = .delete(:filename) unless workbook klass = .delete(:renderer) || Spreadsheet::Workbook klass_args = [.delete(:io)] klass_args << unless .empty? workbook = klass.new(*klass_args) yield workbook if block_given? end disposition = "attachment;" disposition += %Q( filename="#{filename}") if filename headers['Content-Disposition'] = disposition render_io workbook end |