Sha256: 4acf3e24e75d83556be582ca84f81e00093a5492555a6f063d167d47033a88b6

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 KB

Contents

---
sidebar_position: 2
title: CSV Export
---

Exporting to CSV

Example downloading a csv file preserving ransack search, based on [this gist](https://gist.github.com/pama/adff25ed1f4b796ce088ea362a08e1c5)

```jsx title='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 %>
```

```jsx title='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
```

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ransack-3.2.0 docs/docs/going-further/exporting-to-csv.md
ransack-3.1.0 docs/docs/going-further/exporting-to-csv.md
ransack-3.0.1 docs/docs/going-further/exporting-to-csv.md
ransack-3.0.0 docs/docs/going-further/exporting-to-csv.md