I am trying to use Paperclip with my Rails app to add an avatar to a user but it won't save my image or update the database column when creating the user.
This is what the model looks like:
class User < ActiveRecord::Base
has_attached_file :avatar
And the registerform in haml:
- form_for :user, @user, :url => { :action => "signup" }, :html => { :multipart => true } do |f|
...
...
%li
%div{:class => "header"} Profilepicture
%div{:class => "input"}
= f.file_field :avatar
And when I look in the log this is what is being passed to the "signup" action:
Parameters: {"commit"=>"Save", "action"=>"signup", "controller"=>"user/register", "user"=>{"name"=>"Micke Lisinge", "birthmonth"=>"07", "password_confirmation"=>"[FILTERED]", "nickname"=>"lisinge", "avatar"=>#<File:/tmp/RackMultipart20100426-3076-1x04oxy-0>, "gen"=>"m", "birthday"=>"23", "password"=>"[FILTERED]", "birthyear"=>"1992", "email"=>"lisinge@gmail.coma"}}
[paperclip] Saving attachments.
Paperclip says it is saving the template but when I look in the public
folder in my app it has created a system
but the system
folder is empty.
So it seems like it isn't saving the picture to the folder.
It gets handled by the form and saved in my /tmp
folder.
Maybe you guys have any tips or know what this problem might be?
I got it to work.
I had to add :avatar
to attr_accessible
in my user model .
Posting this here and hopes that it helps someone sometime :)
Thanks guys for your help
Don't forget to set :multipart => true in your form declaration. This has bitten me once or twice.
has_attached_file :asset, :url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"
FYI, This code actually saved my files in the root directory of my machine "/" as the :rails_root param was failing. This is on Rails 3.0.0.rc
First check, if path
is correct for the created attachment. You can use avatar.path
to determine that. if it is not returning correct path, may be someone is overriding the default paperclip
path?
Also check, if public/system is writable by the user as which you are running the application server.
Try setting the :path option
has_attached_file :avatar,
:path => ':rails_root/public/system/:id.:extension'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.