我遇到了一些问题,例如,为当前登录的用户更新个人资料图片。
#form for the picture
<%= form_tag '/update_profile_pic/'+user.id.to_s, method: :put, html: { multipart: true } do %>
<%= label_tag :avatar %>
<%= file_field_tag :avatar %>
<%= submit_tag("Update", class: "btn btn-primary") %>
<% end %>
#users_controller.rb
class UsersController < ApplicationController
def update_profile_pic
@user = User.find(params[:id])
@user.avatar = params[:avatar]
if @user.save
flash[:success] = "Profile picture updated."
else
flash[:danger] = "Failed to update profile picture."
end
end
end
#user.rb
class User < ActiveRecord::Base
attr_accessbile :avatar
has_attached_file :avatar, styles: { tiny: "30x30>", thumb: "50x50>", profile: "100x100>" },
default_url: "/assets/images/users/:style/default.png",
url: "/assets/images/users/:id/:style/:basename.:extension",
path: ":rails_root/public/assets/images/users/:id/:style/:basename.:extension"
validates_attachment_size :avatar, less_than: 5.megabytes
validates_attachment_content_type :avatar, content_type: ["image/jpeg", "image/png"]
end
在将表单与所选图片一起提交后,我得到了这个例外:Paperclip::AdapterRegistry::NoHandlerError - No handler found for "me.jpg"
。在注册时添加配置文件图片(即创建用户)可以正常工作,但是作为已登录用户更改图片不起作用。似乎@user.avatar = params[:avatar]
似乎有点愚蠢。
答案 0 :(得分:0)
尝试:
@ user.update_attributes(PARAMS)
答案 1 :(得分:0)
我刚注意到两件事:
enctype=multipart/form-date
,而另一个只是html: { multipart: true }
。form_for
和form_tag
不同。所以我改为html: { multipart: true }
改为multipart: true
。
#form for the picture
<%= form_tag '/update_profile_pic/'+user.id.to_s, method: :put, multipart: true do %>
<%= label_tag :avatar %>
<%= file_field_tag :avatar %>
<%= submit_tag("Update", class: "btn btn-primary") %>
<% end %>
无论从我所提供的内容和回答我的问题的人那里更新头像,这些都是有效的。