Paperclip在Rails应用中无法保存图片

4
我将使用Paperclip来为我的Rails应用程序添加用户头像,但在创建用户时它无法保存我的图像或更新数据库列。

以下是模型的样子:

class User < ActiveRecord::Base
  has_attached_file :avatar

以下是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

当我查看日志时,这就是传递给“signup”操作的内容:

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说它正在保存模板,但是当我查看应用程序中的public文件夹时,它创建了一个system文件夹,但是system文件夹为空。

所以看起来它没有将图片保存到文件夹中。

它由表单处理并保存在我的/tmp文件夹中。

也许您们有什么提示或知道这个问题是什么?

5个回答

3

我搞定了。

我需要在我的用户模型中将:avatar添加到attr_accessible里。

在这里发布,希望能帮到有需要的人 :)

感谢大家的帮助。


我有同样的问题,我尝试添加attr_accessible但仍无法正确保存并在尝试加载图片时显示缺失消息。这非常令人沮丧。 - Mo.
1
尝试设置:path选项。这可能有所帮助。 - Lisinge

2

别忘了在表单声明中设置 :multipart => true。这个问题曾经让我吃过亏。


1
has_attached_file :asset, :url  => "/assets/:id/:style/:basename.:extension",
  :path => ":rails_root/public/assets/:id/:style/:basename.:extension"

顺便说一下,这段代码实际上将我的文件保存在了根目录“/”下,因为:rails_root参数失败了。这是在Rails 3.0.0.rc上的情况。


0
尝试设置:path选项。
has_attached_file :avatar,
  :path => ':rails_root/public/system/:id.:extension'

0

首先检查创建附件时path是否正确。您可以使用avatar.path来确定。如果它没有返回正确的路径,可能有人覆盖了默认的paperclip路径?

还要检查公共/系统是否可由运行应用程序服务器的用户进行写入。


以 root 身份运行,因此它应该能够写入。 - Lisinge
当我使用@user.avatar.path时,我得到了无法将nil转换为String的错误消息。 - Lisinge
几乎总是有用的,将完整的回溯信息发布出来。 - Hemant Kumar
但它甚至没有保存到数据库中。 - Lisinge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接