Экспортировать запись в CSV - PullRequest
0 голосов
/ 02 января 2012

В моем приложении Rails 3.0.10 есть таблица Posts. Я хочу дать своим пользователям возможность экспортировать определенную запись Post в формат CSV, а не все. И хотя в моей таблице Post много полей, я хочу экспортировать только заголовок и текст.

После некоторого поиска, очевидно, лучший способ сделать это - через FasterCSV. И, видимо, это уже встроенный в Ruby 1.9.2, который я использую. Дело в том, что все учебные пособия устарели (из Rails 1 или 2), и я абсолютно не знаю, как этого добиться.

Я пытался вставить свой posts_controller.rb

def export_to_csv 
  @post = Post.find(params[:id])
     csv_string = CSV.generate do |csv| 
    csv << [@post.title, @post.body] 
  end 

# send it to the browsah
send_data csv_string, 
          :type => 'text/csv; charset=iso-8859-1; header=present', 
          :disposition => "attachment; filename=post.csv" 
end

Какой я ДУМАЮ может быть правильным кодом, но я понятия не имею, как использовать его на мой взгляд. В идеале я хочу иметь ссылку для экспорта файла CSV, но я думаю, что это должно быть сделано с помощью form_tag?

Буду признателен, если кто-нибудь укажет мне правильное направление. Спасибо.

1 Ответ

1 голос
/ 03 января 2012

После нескольких часов поиска в Google и экспериментов я нашел ответ.

1.) Установите этот камень: https://github.com/dasil003/csv_builder

2.) Добавьте respond_to do |format| format.csv к действию, которое вы хотите превратить в CSV (в моем случае, def show часть posts_controller

3.) Создайте файл action.csv.csvbuilder (в моем случае show.csv.csvbuilder) и добавьте необходимые данные (в моем случае добавьте csv << [@post.title, @post.body])

4.) Добавьте ссылку на CSV в представлениях.

...