Skip to main content

CSV Export

Exporting to CSV

Example downloading a csv file preserving ransack search, based on this gist

index.html.erb
<h1>Users</h1>

<%= search_form_for @q, url: dashboard_index_path do |f| %>
<%= f.label :name_cont %>
<%= f.search_field :name_cont %>

<%= f.submit %>
<% end %>

<ul>
<% @users.each do |user| %>
<li><%= user.name %> [<%= user.devices.map {|device| device.name }.join(', ') %>]</li>
<% end %>
</ul>

<% if params[:q] %>
<%= link_to 'Export 1', dashboard_index_path({name: params[:q][:name_cont]}.merge({format: :csv})) %>
<% else %>
<%= link_to 'Export 2', dashboard_index_path(format: 'csv') %>
<% end %>
user.rb
require 'csv'

class User < ApplicationRecord
has_many :devices

def self.get_csv(users)
CSV.generate do |csv|
csv << ["Name", "Devices"]

users.each do |user|
csv << [user.name, user.devices.map{|device| device.name}.join(', ')]
end
end
end
end