Ruby on rails 如何实施Carrierwave';s";删除上载的文件;?

Ruby on rails 如何实施Carrierwave';s";删除上载的文件;?,ruby-on-rails,ruby,ruby-on-rails-4,carrierwave,Ruby On Rails,Ruby,Ruby On Rails 4,Carrierwave,我正在尝试实现Carrierwave的。虽然上载本身可以正常工作,但删除图像/徽标不起作用。正如Carrierwave建议的那样,我在视图中添加一个复选框以删除上传的徽标。因此,在我的查看页面中: <div class="logo"> <%= f.label :logo %> <%= f.file_field :logo, accept: 'image/jpeg,image/gif,image/png', style: "width:

我正在尝试实现Carrierwave的。虽然上载本身可以正常工作,但删除图像/徽标不起作用。正如Carrierwave建议的那样,我在视图中添加一个复选框以删除上传的徽标。因此,在我的查看页面中:

    <div class="logo">
      <%= f.label :logo %>
      <%= f.file_field :logo, accept: 'image/jpeg,image/gif,image/png', style: "width:100%" %>

      <p>
        <label>
          <%= f.check_box :remove_logo %>
          Remove logo
        </label>
      </p>
    </div>
我不确定如何处理
未经允许的参数
。我已经尝试将
attr\u accessor:remove\u logo
添加到控制器和用户模型中,但这没有什么不同

gem还提到了
@user.remove_logo
@user.save
。因此,我还尝试将它们添加到控制器的update方法中,如下所示。但这没什么区别。我做错了什么

  def update
    @user = User.friendly.find(params[:id])
    if @user.update_attributes(update_params)
      if params[:remove_logo]
        @user.remove_logo!
        @user.save
      end
      flash[:success] = "Profile updated"
      redirect_to @user
    else
      render 'edit'
    end
  end

def update_params
    params.require(:user).permit(:email,
                                 :fullname,
                                 :website, 
                                 :logo
                                 :password, 
                                 :password_confirmation)
end

您只需添加
:删除徽标
更新参数

然后,您可以摆脱以下情况:

if params[:remove_logo]
  @user.remove_logo!
  @user.save
end

谢谢这对我有用。我一个人是不会想到的。
if params[:remove_logo]
  @user.remove_logo!
  @user.save
end