我进行了设置,以便我的用户模型具有附加文件: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 %>
然后在我的用户控制器中创建edit
和update
方法:
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
我的问题是,所有这一切,上传文件仍然无效。在访问用户页面并上传图像时,我只是得到了“遗失”图像所在的位置。如果我将图像设置为必填字段,我会收到一个错误,指出文件名是必需的(所以我猜上传工作不正常?)。
非常感谢任何帮助。
答案 0 :(得分:0)
不要忘记创建应将附件保存到的文件夹结构。
答案 1 :(得分:0)
我不确定你的rails root是否可以这样设置。我一直在使用rails 2.3作为项目,我的设置为#{RAILS_ROOT} /public/pdfs/:id/:style/:basename.:extension
这个previous SO帖子似乎与我同意。