Sha256: 3e10d3f82d3db03f6c3f510541923c723b8dd5d1ccb3d3331b0a33bfc92fff1f

Contents?: true

Size: 980 Bytes

Versions: 1

Compression:

Stored size: 980 Bytes

Contents

require 'action_controller'
unless defined? Mime::XLSX
	Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
end

ActionController::Renderers.add :xlsx do |filename, options|
  unless formats.include?(:xlsx) || Rails.version < '3.2'
    formats[0] = :xlsx
  end

  if filename =~ /^\/([^\/]+)\/(.+)$/
    options[:prefixes][0] = $1
    filename = $2
  end
  options[:template] = filename

  disposition   = options.delete(:disposition) || 'attachment'
  download_name = options.delete(:filename) || "#{filename}.xlsx"
  download_name += ".xlsx" unless download_name =~ /\.xlsx$/

  send_data render_to_string(options), :filename => download_name, :type => Mime::XLSX, :disposition => disposition
end

# For respond_to default
class ActionController::Responder
  def to_xlsx
    if @default_response
      @default_response.call(options)
    else
      controller.render({:xlsx => controller.action_name}.merge(options))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
axlsx_rails-0.1.5 lib/axlsx_rails/action_controller.rb