将记录导出到CSV
问题描述:
我在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完成?
如果有人能指引我走向正确的方向,我将不胜感激。谢谢。
答
经过几个小时的谷歌搜索和实验,我找到了答案。
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链接。
可能是这个链接可以帮助你http://*.com/questions/94502/in-rails-how-to-ret- son-records-as-a-csv-file – PriteshJ 2012-01-02 13:46:28
经过一个小时的搜索后找出它并试验。我会尽快发布解决方案。 – cdotfeli 2012-01-02 14:43:44