我尝试在我的Rails应用中使用Paperclip向用户添加头像,但在创建用户时不会保存我的图片或更新数据库列。
这就是模型的样子:
class User < ActiveRecord::Base
has_attached_file :avatar
haml中的registerform:
- form_for :user, @user, :url => { :action => "signup" }, :html => { :multipart => true } do |f|
...
...
%li
%div{:class => "header"} Profilepicture
%div{:class => "input"}
= f.file_field :avatar
当我查看日志时,这是传递给“注册”操作的内容:
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
文件夹中。
也许你们有任何提示或知道这个问题可能是什么?
答案 0 :(得分:3)
我得到了它的工作。
我必须在用户模型中将:avatar
添加到attr_accessible
。
在此发布此信息并希望有时可以帮助某人:)
谢谢你的帮助
答案 1 :(得分:2)
不要忘记设置:multipart =&gt;在您的表单声明中为true。这让我咬了一两次。
答案 2 :(得分:1)
has_attached_file :asset, :url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"
仅供参考,这段代码实际上将我的文件保存在我的机器“/”的根目录中,因为:rails_root param失败了。这是在Rails 3.0.0.rc
上答案 3 :(得分:0)
首先检查,如果path
对于创建的附件是正确的。您可以使用avatar.path
来确定。如果它没有返回正确的路径,可能有人覆盖默认的paperclip
路径?
同时检查公共/系统是否可由运行应用程序服务器的用户写入。
答案 4 :(得分:0)
尝试设置:路径选项
has_attached_file :avatar,
:path => ':rails_root/public/system/:id.:extension'