Module: RenderAsCSV

Defined in:
lib/comma/render_as_csv.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
# File 'lib/comma/render_as_csv.rb', line 8

def self.included(base)
  base.alias_method_chain :render, :csv
end

Instance Method Details

#render_with_csv(options = nil, extra_options = {}, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/comma/render_as_csv.rb', line 12

def render_with_csv(options = nil, extra_options = {}, &block)
  return render_without_csv(options, extra_options, &block) unless options.is_a?(Hash) and options[:csv].present?

  content  = options.delete(:csv)
  style    = options.delete(:style) || :default
  filename = options.delete(:filename)

  headers.merge!(
    'Content-Transfer-Encoding' => 'binary',
    'Content-Type'              => 'text/csv; charset=utf-8'
  )
  filename_header_value = "attachment"
  filename_header_value += "; filename=\"#{filename}\"" if filename.present?
  headers.merge!('Content-Disposition' => filename_header_value)

  @performed_render = false

  render_stream :status => 200,
                :content => Array(content),
                :style => style
end