我环顾四周,我无法弄清楚为什么这是有效的。我允许用户注册,一开始不需要他们上传头像。但是,如果他们愿意,他们可以在注册后上传头像。我允许他们在“配置文件”控制器中编辑他们的头像,而不是在用户控制器中。但是,头像不会更新。我正在为用户使用设计。下面的代码
<%= form_for edit_user_path(current_user.id), :html => { :multipart => true } do |form| %>
<%= form.file_field :avatar %>
<%= form.submit "upload" %>
<% end %>
在用户控制器中,我有这个:
def edit
@user = User.find(params[:id])
@user.update_attribute(:avatar, params[:user][:avatar])
end
在用户模型中,我有这个
has_attached_file :avatar, :styles => { :show => "150x150#" }, :default_url => 'missing_:style.png'
头像不更新或保存。我不确定为什么。
使用新的表单代码更新:
<%= form_for current_user, :url => {:action => 'update'}, :html => { :multipart => true } do |form| %>
<%= form.file_field :avatar %>
<%= form.submit "upload" %>
<% end %>
在配置文件控制器中,我有这个:
def update
@user = User.find(params[:id])
@user.update_attribute(:avatar, params[:user][:avatar])
end
我收到此错误:# 的未定义方法“名称”
请求中传递的参数如下
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"cxANtlyj+W+ykSnivfQTfTznkpt7yXe75E8jWI1IC+o=",
"user"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0x000001032ac7c8 @original_filename="pictester.png",
@content_type="image/png",
@headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"pictester.png\"\r\nContent-Type: image/png\r\n",
@tempfile=#<File:/var/folders/x9/gvnnn6s9585gkxw40c51d3540000gn/T/RackMultipart20130622- 10366-a8ome3>>},
"commit"=>"upload",
"id"=>"1"}