[前][次][番号順一覧][スレッド一覧]

rails:3970

From: Nobukazu TAKAI <nocturne_2_eflat_9_2@m...>
Date: Sat, 08 Feb 2014 22:11:29 +0900
Subject: [rails:3970] ファイルの圧縮

皆様
次のようなことをしたいのですが、できずに詰まっているのでご助言を頂きたくメールしました。
[やりたいこと]
データベースに登録されている PDF データを ZIP or TAR で1つのファイルをまとめてからダウロードするアクションを作る
チェックされた本のPDF をダウンロードしたいです。

book model ( title, abstract, author )
has_one :pdf

pdf model ( data, content_type, filename, book_id )
belongs_to :paper

app/views/books/index.html.erb
...
<%= form_tag(:action=> 'download_pdf') do -%>
  <% @books.each do |book| -%>
    <td><%= book.title -%></td>
    <td><%= book.abstract -%></td>
    <td><%= book.author -%></td>
    <td><%= check_box_tag "checked_items[#{book.id}]", book.id %></td>
  <% end -%>
  <%= submit_tag "チェックした項目の PDF をダウンロード" %>
<% end -%>

とりあえず、圧縮をせずにファイルを次々にダウンロードしようかと以下のような controller を作成したのですが、
Render and/or redirect were called multiple times in this action.
というエラーが出て、うまくいきませんでした。
1つだけチェックボックスをチェックしたときにはファイルをダウンロードできたのですが。
そこで、send_data を実行する前に対象のファイルを1つにまとめてしまえば、全て解決!かと思い、ネットで検索するのですが、思うようなサイトに当たりません。
rubyzip などあることは見つけたのですが、情報が少なくて思うように使えませんでした。

app/controllers/books_controller.rb

  def download_pdf
    if params[:checked_items].present?
      items = params[:checked_items].keys
      items.each do |item|
        @book= Book.find(item)
        if @book.pdf.present?
          send_data @book.pdf.data, type: @book.pdf.content_type, disposition: "attachment", filename: @paper.pdf.filename
        end
      end
    else
      redirect_to :admin_papers, notice: 'チェックされていなかったよ'
    end
  end

ご助言を宜しくお願い致します。

[前][次][番号順一覧][スレッド一覧]

->    3970 2014-02-08 14:11 [nocturne_2_eflat_9_2] ファイルの圧縮                          
   @  3971 2014-02-08 15:20 ┗[netwillnet@g...     ]                                       
      3972 2014-02-08 23:26  ┗[nocturne_2_eflat_9_2]                                     
   @  3973 2014-02-09 08:07   ┗[terasawan@g...      ]                                   
   @  3974 2014-02-09 08:09    ┣[terasawan@g...      ]                                 
      3975 2014-02-09 09:22    ┃┗[nocturne_2_eflat_9_2]                               
      3976 2014-02-09 11:08    ┗[zn@m...             ]                                 
   @  3977 2014-02-09 15:02     ┣[terasawan@g...      ]                               
      3978 2014-02-09 15:02     ┗[nocturne_2_eflat_9_2]