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

rails:3971

From: 前島真一 <netwillnet@g...>
Date: Sat, 8 Feb 2014 23:20:37 +0900
Subject: [rails:3971] Re: ファイルの圧縮

前島です。

無理にRubyで圧縮しようとせずに、Kernel#system メソッドを使って、tar や gzip コマンドなどを呼び出すと良いと思います。


2014年2月8日 22:11 Nobukazu TAKAI <nocturne_2_eflat_9_2@m...>:

> 皆様
> 次のようなことをしたいのですが、できずに詰まっているのでご助言を頂きたくメールしました。
> [やりたいこと]
> データベースに登録されている 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
>
> ご助言を宜しくお願い致します。




-- 
前島 真一(@netwillnet)
http://willnet.in/


添付ファイル

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

      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]