Sha256: 6fd245124d3906186260455358a0b14e7a9a3fcc16d025c5c2992dd193aefdd8
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
require 'csv' module Typus module Controller module Format protected def generate_html items_per_page = @resource.typus_options_for(:per_page) @items = @resource.page(params[:page]).per(items_per_page) end #-- # TODO: Find in batches only works properly if it's used on models, not # controllers, so in this action does nothing. We should find a way # to be able to process large amounts of data. #++ def generate_csv fields = @resource.typus_fields_for(:csv) filename = Rails.root.join("tmp", "export-#{@resource.to_resource}-#{Time.zone.now.to_s(:number)}.csv") options = { :conditions => @conditions, :batch_size => 1000 } ::CSV.open(filename, 'w') do |csv| csv << fields.keys @resource.find_in_batches(options) do |records| records.each do |record| csv << fields.map do |key, value| case value when :transversal a, b = key.split(".") record.send(a).send(b) when :belongs_to record.send(key).try(:to_label) else record.send(key) end end end end end send_file filename end def generate_json export(:json) end def generate_xml export(:xml) end def export(format) fields = @resource.typus_fields_for(format).map { |i| i.first } methods = fields - @resource.column_names except = @resource.column_names - fields render format => @resource.send("to_#{format}", :methods => methods, :except => except) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
typus-3.1.0.rc18 | lib/typus/controller/format.rb |