2012-01-02 116 views
0

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

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

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

+0

可能是这个链接可以帮助你http://stackoverflow.com/questions/94502/in-rails-how-to-ret- son-records-as-a-csv-file – PriteshJ 2012-01-02 13:46:28

+0

经过一个小时的搜索后找出它并试验。我会尽快发布解决方案。 – cdotfeli 2012-01-02 14:43:44

回答

1

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

1)安装这种宝石:https://github.com/dasil003/csv_builder

2)添加respond_to do |format| format.csv到要转成CSV动作(在我的情况下,posts_controller

3的def show部分)创建一个action.csv.csvbuilder文件(在我的情况下,show.csv.csvbuilder)并添加您需要的数据(在我的情况下,添加csv << [@post.title, @post.body]

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