# rails_csv_renderer Custom CSV renderer for ActiveRecord collections ## Rails & Ruby Versions Supported *Rails:* 4.x *Ruby:* 2.x ## Installation Add this line to your application's Gemfile: gem 'rails_csv_renderer' And then execute: $ bundle Or install it yourself as: $ gem install rails_csv_renderer ## Usage The rails_csv_renderer allows you to render any collection as CSV data. Result CSV includes all columns of model with localized column's names ```ruby class ReportsController < ApplicationController def index @reports = Report.all respond_to do |format| format.csv { render csv: @reports } end end end ``` Will render a CSV file similar to:
TitleContentCreated atUpdated at
House reportReport about house devices2014-07-14 01:00:42 UTC2014-07-14 01:00:42 UTC
Work reportReport about work devices2014-07-14 12:42:42 UTC2014-07-14 12:42:42 UTC
### Options You can pass few options at call of rendrer: * *:filename* - Name of file. Optional * *:csv_options* - Options for CSV generator. [Availible options](http://www.ruby-doc.org/stdlib-2.1.2/libdoc/csv/rdoc/CSV.html#method-c-new). Optional * *:columns* - Array of variables and methods. Name of columns will be created based on your translations. Optional Example ```ruby class ReportsController < ApplicationController def index @reports = Report.all respond_to do |format| format.csv { render csv: @reports, filename: 'custom-reports.csv', csv_options: { col_sep: '\t' }, columns: [:created_at, :title] } end end end ``` ### Localize column's names If you have translations for model's attributes under scope [:activerecord, :attributes, \*model_name\*] names of columns will be automatically translated. ### Customize CSV To customize your CSV file with different methods and name of columns you should add next methods to model **csv_header**(class method), **csv_row**. * **csv_header** should return array with column's titles. * **csv_row** should return array with values for columns. ```ruby class Cat < ActiveRecord::Base def self.csv_header ["ID", "Cat's name"] end def csv_row [id, name] end end ``` ## Contributing 1. Fork it ( https://github.com/[my-github-username]/rails_csv_renderer/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request