我有一些问题,例如,更新当前用户登录的个人资料图片。
#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]似乎做了件有点愚蠢的事情。
发布于 2014-08-13 04:08:07
尝试使用:
@user.update_attributes(参数)
发布于 2014-08-13 21:44:00
我只注意到两件事:
enctype=multipart/form-date,而另一个是item #1的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 %>不管从我提供的内容和回答我问题的人那里更新化身的参数是什么,它们都有效。
https://stackoverflow.com/questions/25272772
复制相似问题