Ruby on Rails Paperclip - 文件未保存

时间:2011-03-01 18:24:08

标签: ruby-on-rails model paperclip attachment

我进行了设置,以便我的用户模型具有附加文件:photo

has_attached_file :photo, :styles => { :small => "150x150>" },
              :url  => "../avatars/:basename.:extension",
              :path => ":rails_root/public/avatars/:basename.:extension"
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']

为了尝试使用此功能,我在用户edit视图中为头像上传添加了一个字段:

<% form_for @user, :html => { :multipart => true } do |f| %>
#Unimportant Stuff here
<%= f.file_field :photo %>
#Unimportant Stuff here
<% end %>

然后在我的用户控制器中创建editupdate方法:

def edit
    @user = User.find(params[:id])
end

def update
    @user = User.find(params[:id])
    respond_to do |format|
     if @user.update_attributes(params[:user])
    format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
    format.xml  { head :ok }
     else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
     end
    end
end

我的问题是,所有这一切,上传文件仍然无效。在访问用户页面并上传图像时,我只是得到了“遗失”图像所在的位置。如果我将图像设置为必填字段,我会收到一个错误,指出文件名是必需的(所以我猜上传工作不正常?)。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

不要忘记创建应将附件保存到的文件夹结构。

答案 1 :(得分:0)

我不确定你的rails root是否可以这样设置。我一直在使用rails 2.3作为项目,我的设置为#{RAILS_ROOT} /public/pdfs/:id/:style/:basename.:extension

这个previous SO帖子似乎与我同意。