Paperclip不会仅通过控制台使用表单将头像保存到用户

时间:2012-08-16 20:45:33

标签: ruby-on-rails devise paperclip

我是那些伤心的人之一,无法让Rails 3.2.6,Devise和Paperclip一起玩得开心。我使用普通的HTML表单来测试创建用户并同时上传头像。根据日志,所有看起来都很好,但图像没有上传到Amazon S3,图像细节也没有保存到用户。

这是我提交后Heroku日志的输出:

2012-08-16T20:29:16+00:00 app[web.1]: Started POST "/api/v1/users" for 90.224.160.143 at 2012-08-16 20:29:16 +0000
2012-08-16T20:29:16+00:00 app[web.1]: Processing by Api::V1::UsersController#create as JSON
2012-08-16T20:29:16+00:00 app[web.1]:   Parameters: {"email"=>"eee@eee.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "username"=>"eee", "avatar"=>#<ActionDispatch::Http::UploadedFile:0x000000060fa310 @original_filename="farmer.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"avatar\"; filename=\"farmer.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/tmp/RackMultipart20120816-2-1oz8ytm>>}
2012-08-16T20:29:16+00:00 app[web.1]: [paperclip] Saving attachments.
2012-08-16T20:29:16+00:00 app[web.1]: [paperclip] Saving attachments.
2012-08-16T20:29:16+00:00 app[web.1]: [paperclip] Saving attachments.

这是我在用户模型中使用的附件代码:

has_attached_file :avatar,
      :storage => :s3,
      :s3_credentials => "#{Rails.root}/config/s3.yml",
      :bucket => "appprofilepictures",
      :styles => { :medium => "300x300>", :thumb => "100x100>"},
      :path => 'photos/:id/:style/:id.:extension'

这是attr_accessible:

attr_accessible :avatar, :firstname, :lastname, :username, :email, :password, :password_confirmation, :remember_me, :authentication_token

这是我的html表单代码:

<form name='profile' action='http://example.com/users' method='post' enctype="multipart/form-data">
<input type="text" name="email" />
<input type="text" name="password" />
<input type="text" name="password_confirmation" />
<input type="text" name="username" />
<input type="file" name="avatar" />
<input type="submit" value="Send" />
</form>

我可以在Heroku控制台中手动创建用户,然后上传。

1 个答案:

答案 0 :(得分:1)

看起来您遗失了:has_attached_file中的几件要上传到S3的内容。如果我没记错的话,我最后一次设置它,如果没有这些就不会上传。

:url            => ':s3_alias_url',
:s3_host_alias  => "<your-bucket-name>.s3.amazonaws.com",

上次我使用S3设置Paperclip时解决了我的问题。另请查看documentation所需的内容。