0

Rails 3.0.10 アプリに Posts テーブルがあります。すべての投稿ではなく、特定の投稿レコードを 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.csvCSV にしたいアクションに追加します (私の場合、def showposts_controller の一部)

3.) action.csv.csvbuilder ファイル (私の場合は show.csv.csvbuilder) を作成し、必要なデータを追加します (私の場合は add csv << [@post.title, @post.body])

4.) ビューに CSV へのリンクを追加します。

于 2012-01-03T00:58:42.613 に答える