我在使用Carrierwave :remove_avatar
复选框在我的Devise配置文件编辑表单中工作时遇到了令人难以置信的麻烦。我一直在关注carrierwave文档和wiki。
我已将上传器安装到用户模型。我在ApplicationController清理程序
中添加了:avatar
和:remove_avatar
application_controller.rb
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) do |u|
u.permit(:first_name, :last_name, :email,
:password, :password_confirmation, :avatar, :remove_avatar)
end
devise_parameter_sanitizer.for(:sign_up) do |u|
u.permit(:first_name, :last_name, :email,
:password, :password_confirmation)
end
end
我已将:remove_avatar
添加到编辑表单
/devise/registrations/edit.html.erb
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, multipart: true }) do |f| %>
<%= f.label :avatar %><br />
<%= image_tag(resource.avatar_url(:thumb)) %>
<%= f.file_field :avatar, accept: 'image/jpeg,image/png' %>
<label>
<%= f.check_box :remove_avatar %>
Remove avatar
</label>
<%= f.label :first_name %><br />
<%= f.text_field :first_name, autofocus: true %>
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
<%= f.label :email %><br />
<%= f.email_field :email %>
<div><%= link_to 'Cancel', resource %> <%= f.submit "Update" %></div>
<% end %>
除了移除头像之外,我没有任何其他的载波问题。当我勾选方框并提交表格时,图片不会被删除。
我做了一个测试,我使用了用户控制器而不是设计注册控制器,并将表单提交到@user
而不是resource
,我能够让它运行起来。我宁愿坚持惯例并使用注册控制器。我做错了什么或错过了什么?
答案 0 :(得分:0)
@user.remove_avatar!
@user.remove_avatar = true
@user.save
@user.reload
试试这个,可以帮助你。
答案 1 :(得分:0)
在您的模型中使用此功能:
after_commit :remove_avatar!, on: :destroy