我的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来完成?
如果有人能指出我正确的方向,我将不胜感激。感谢。
答案 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的链接。