gpt4 book ai didi

ruby-on-rails - Carrierwave的 "Removing uploaded files"如何实现?

转载 作者:数据小太阳 更新时间:2023-10-29 07:41:16 26 4
gpt4 key购买 nike

我正在尝试实现 Carrierwave 的 Removing uploaded files .虽然上传本身工作正常,但删除图像/ Logo 不起作用。正如 Carrierwave 建议的那样,我在 View 中添加了一个复选框以删除上传的 Logo 。所以我在我的 View 页面中有:

    <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>

我认为通过添加此复选框,删除 Logo 现在应该已经可以工作了。但是,选中该框然后提交表单不会删除 Logo (它也不会生成错误消息)。服务器说:

Started PATCH "/users/fakename11"
Processing by UsersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"eR3XCiW***Oge0w==", "user"=>{"fullname"=>"Natasha Pacocha", "email"=>"example@example.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "remove_logo"=>"1", "organization"=>"Bartoletti-Bins", ...etc...}, "commit"=>"Save changes", "id"=>"fakename11"}
Unpermitted parameter: remove_logo

我不确定如何处理 unpermitted parameter。我已经尝试将 attr_accessor :remove_logo 添加到 Controller 和用户模型中,但这没有任何区别。

gem 还提到了 @user.remove_logo!@user.save。所以我也尝试将它们添加到 Controller 的更新方法中,如下所示。但这没有区别。我做错了什么?

  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

最佳答案

你只需要添加:remove_logoupdate_params

然后你可以去掉以下内容:

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

关于ruby-on-rails - Carrierwave的 "Removing uploaded files"如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com