2012-01-02 6 views
0

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

После выполнения некоторых поисков, по-видимому, лучший способ сделать это - через 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?

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

+0

Возможно, эта ссылка может помочь вам http://stackoverflow.com/questions/94502/in-rails-how-to-return-records-as-a-csv-file – PriteshJ

+0

Выяснил это через еще один час поиска и экспериментировать. Выложите решение, как только смогу. – cdotfeli

ответ

1

После нескольких часов работы в 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 в представлениях.