1

I had a problem with the Paperclip gem where the default_url doesn't load after it fingerprinted in production environment, my code was like this:

class User

# Attachments to Paperclip - Profile pic
  has_attached_file :profilepic_attachment, 
                    :styles => { 
                      thumb: '100x100#',
                      square: '500x500#'
                    },
                    :default_url => ActionController::Base.helpers.asset_path("missing/default_user.png"),
                    :preserve_files => true
  validates_attachment_content_type :profilepic_attachment, content_type: /\Aimage\/.*\Z/

end

Note that when I do rails c in production and print out ActionController::Base.helpers.asset_path("missing/default_user.png"). The fingerprinted version (correct version) is printed out. default_user-fb34158daae99f297ad672c43bb1a4d3917d8e272b5f2254aa055392aa2faa94.png.

However, when I inspect it from browser, the original /assets/missing/default_user.png appeared.

I struggled for long time until I came across this post, which tells me to change

:default_url => ActionController::Base.helpers.asset_path("missing/default_user.png"),

to

:default_url => lambda { |image| ActionController::Base.helpers.asset_path("missing/default_user.png") },

I wasn't sure what happened, but then it works. I then wonder what lambda function is for and when is it used in rails? also, it passed in a variable |image| but seems it wasn't use in the code. Why is that?

Thanks!

Chris Yeung
  • 2,613
  • 6
  • 34
  • 57
  • http://stackoverflow.com/questions/9646549/default-url-in-paperclip-broke-with-asset-pipeline-upgrade – Athar Jul 30 '15 at 08:41

0 Answers0