删除头像 - carrierwave和设计

时间:2015-03-16 17:26:37

标签: ruby-on-rails-4 devise carrierwave

我在使用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,我能够让它运行起来。我宁愿坚持惯例并使用注册控制器。我做错了什么或错过了什么?

2 个答案:

答案 0 :(得分:0)

@user.remove_avatar!
@user.remove_avatar = true
@user.save
@user.reload

试试这个,可以帮助你。

答案 1 :(得分:0)

在您的模型中使用此功能:

  after_commit :remove_avatar!, on: :destroy