1

I have used the following tutorials:

http://patshaughnessy.net/2009/5/16/paperclip-sample-app-part-2-downloading-files-through-a-controller

This tutorial walks you through downloading files through the controller rather than as static files. I did this to control access to the files.

http://emersonlackey.com/article/paperclip-with-rails-3

This tutorial walks you through the process of creating a model for your files and using that to allow multiple file uploads

So, for the most part I got the uploading to work fine, however, the problem is in the downloading.
A little background. I have the following key models.

class VisualSubmission < ActiveRecord::Base
  has_many   :assets
  accepts_nested_attributes_for :assets, :allow_destroy => true;
end

class Asset < ActiveRecord::Base
  belongs_to :visual_submission

  has_attached_file :image, :styles => { :original => "100%", :large => "600x600>", :small => "150x150>", :thumb => "50x50>"}, :convert_options => {:all => "-auto-orient"},
                  :path => ':rails_root/secure/system/:attachment/:id/:style/:basename.:extension',
                :url => '/:class/:id/:attachment?style=:style'

end

In order to download files through the controller, an action is created as such:

def images
  visual_submission = VisualSubmission.find(params[:id])
  style = params[:style] ? params[:style] : 'original'
  send_file visual_submission.image.path(style), :type =>  visual_submission.image_content_type, :disposition => 'inline'   
end

So, as I said above, uploading is just fine. One thing that is different but expected, when it stores the file it uses the ID from the assets model. This is all well and good, however, I am having trouble getting the URL correct now. I created a route to my images:

resources :visual_submissions do
  member do
   get :images
 end
end

And this is what my route looks like.

images_visual_submission GET /visual_submissions/:id/images(.:format) {:action=>"images", :controller=>"visual_submissions"}

Now the piece of code that in theory is supposed to access the image.

This is from my edit form. It is supposed to show the current images stored.

<%= f.fields_for :assets do |asset_fields| %>
  <% unless asset_fields.object.new_record? %>
    <p>
        <%= asset_fields.object.image.url %>
            </p>
  <% end %>
<% end %>

Now this is obviously not going to work. I am not sure what object is doing here, but what I do know is, my images should be going through my visual_submissions controller which this is not touching. I am not entirely sure if I am asking this questions correctly, but I am stuck. One idea I had was to create a assets controller and move the images method into there but I am not sure how much that will help.

Any thoughts? Thanks!

Ramon Araujo
  • 1,743
  • 22
  • 31
Raymond
  • 43
  • 6
  • can this help you http://stackoverflow.com/questions/11605787/uploading-multiple-files-with-paperclip/19379756#19379756 – devudilip Oct 15 '13 at 11:14

1 Answers1

0

@Raymond, just put the last code snippet inside the _form.html.erb corresponding to your visual_submissions. Just be sure that you put it before the <%= f.submit %>, inside the form_for, of course. Hope that helps,

Ramon Araujo
  • 1,743
  • 22
  • 31