gpt4 book ai didi

ruby-on-rails - 图像不删除载波

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:49 24 4
gpt4 key购买 nike

正常情况下使用 Carrierwave 上传图片,此时用户可以上传图片并为图片指定“之前”或“之后”的状态。

我在删除图像时遇到问题,例如在编辑表单的这一部分

<%= f.fields_for :portfolio_images do |i| %>

<% if i.object.status == 'Before' %>
<div class="form-group">
<%= i.label 'Before' %><br>
<%= image_tag(i.object.image_url(:thumb)) %><br>
<label>
<%= i.check_box :remove_image %>
Remove Image
</label>
</div>
<% end %>
<% end %>

状态为之前的图像将显示,但当单击复选框删除图像时,图像仍然存在。我已将 remove_image 添加到我允许的参数中,所以不确定在这里还能做什么

def portfolio_params
params.require(:portfolio).permit(:id, :title, :description, portfolio_images_attributes:[:id, :portfolio_id, :image, :status, :image_cache, :remove_image])
end

这里是传递的参数

Parameters: {"utf8"=>"✓", "authenticity_token"=>"WDRAWPkQoIF2OkFk8gZpN5niUs3+PcpDRsJ/DvQ0JMk=", "portfolio"=>{"title"=>"Garden Lawn", "description"=>"Lorem Ipsum", "portfolio_images_attributes"=>{"0"=>{"remove_image"=>"1", "id"=>"1"}, "1"=>{"remove_image"=>"0", "id"=>"2"}}}, "commit"=>"Submit", "id"=>"6"}

谢谢

最佳答案

CarrierWave 要求您将如下内容添加到您的 portfolio_image_attributes:

:_destroy

添加该属性后,您需要更新复选框以引用该属性。我不确定您是否自己创建了“:remove_image”,但我认为没有必要。

我添加了一个复选框(实际上,在我的应用程序中它是一个隐藏字段),如下所示:

<%= f.hidden_field :_destroy %> #(Where f references my portfolio_image, NOT my portfolio)

然后,单击 X(引用我的 hidden_​​field)并提交我的表单后,图像将被删除。请记住,如果您的图像 uploader 与父模型存在 has_many 关系,则需要将 allow_destroy: true 添加到 accepts_nested_attributes。否则它将不允许您从父表单中销毁图像。

投资组合.rb:

has_many :portfolio_images, dependent: :destroy
accepts_nested_attributes_for :portfolio_images, allow_destroy: true

关于ruby-on-rails - 图像不删除载波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135322/

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