0

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

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

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

4

1 回答 1

1

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

1.) 安装这个 gem: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 的链接。

于 2012-01-03T00:58:42.613 回答