将记录导出为CSV

时间:2012-01-02 13:36:56

标签: ruby-on-rails-3 csv export-to-csv

我的Rails 3.0.10应用程序中有一个帖子表。我想让我的用户选择将特定的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

THINK 可能是正确的代码,但我不知道如何在我的视图中使用它。理想情况下,我想要一个导出CSV文件的链接,但我认为必须通过form_tag来完成?

如果有人能指出我正确的方向,我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

经过几个小时的谷歌搜索和实验后,我找到了答案。

1。)安装此gem:https://github.com/dasil003/csv_builder

2。)将respond_to do |format| format.csv添加到要转换为CSV的操作中(在我的例子中,是posts_controller的def show部分

3。)创建一个action.csv.csvbuilder文件(在我的例子中,show.csv.csvbuilder)并添加你需要的数据(在我的例子中,添加csv << [@post.title, @post.body]

4.。)在视图中添加指向CSV的链接。