Sha256: 0588264804f82e98d0e424e741edf5814ac730a839fbc4518f841744ffd255d1
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
### Carrierwave Information from @SicutDominus [Carrierwave gem](https://github.com/carrierwaveuploader/carrierwave). By default Carrierwave uploads files into `/public/uploads`. Here is an example to merge all attachments on a standard `user` model into a single `report` file, stored in `/tmp`. #models/user.rb class User < ActiveRecord::Base has_many :attachments, dependent: :destroy accepts_nested_attributes_for :attachments, :allow_destroy => true end #config/routes.rb get 'users/:id/report' => 'users#report', as: :users_report #views/users/show.html.erb <%= link_to 'Report', users_report_path(@user) %> #app/controllers/users_controller.rb def report failure_list = [] pdf = PDF::Merger.new if @user.attachments.empty? flash[:error] = 'No attachments.' else for attachment in @user.attachments # Note the .to_s, otherwise code fails by passing a Ruby item rather than string into add_file pdf.add_file Rails.root.join("public#{attachment.file.to_s}").to_s end # Best to have some kind of unique identifier in the file name so they aren't constantly overwriting each other save_path = Rails.root.join('tmp', "report - #{@user.email}.pdf").to_s pdf.save_as(save_path, failure_list) # File now stored in tmp # Manipulate the file here (eg. send out via email), then uncomment the line below if you want it deleted. # Comment the line below to examine file for testing purposes #File.delete(save_path) flash[:notice] = 'Report successfully generated.' end redirect_to @user end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pdf-merger-0.3.2 | Carrierwave.md |