gpt4 book ai didi

ruby-on-rails - 在 Rails 6 中使用 has_many_attached 更新图像的正确方法是什么

转载 作者:行者123 更新时间:2023-12-03 15:55:24 24 4
gpt4 key购买 nike

我有一个 Rails 6 应用程序,它使用 Active Storage 将多个图像存储到带有 has_many_attached 的模型(事件)中。 .

我不明白如何附加额外的图像而不是替换现有的图像。当我第一次上传图像时,它们会正确保存。但是,当我更新记录并添加新图像时,以前的图像会被新图像替换。在 Rails 5 中,新图像将被附加而不替换以前保存的图像。

如何添加新图像而不是替换以前的图像?

我有一个具有以下内容的事件模型:

has_many_attached :images

在表格中我有:
<%= f.file_field :images, multiple: true %>

在 Controller 中,我有以下内容:
def update
@activity = Activity.find(params[:id])

if @activity.update(activity_params)
flash[:success] = "Saved"
redirect_to activity_path(@activity)
else
flash[:error] = "Not saved"
redirect_to edit_activity_path(@activity)
end
end

private

def activity_params
params.require(:activity).permit(:name, images:[])
end

最佳答案

这是我现在的解决方案:

将此添加到更新操作:

if params[:activity][:images].present?
params[:activity][:images].each do |image|
activity.images.attach(image)
end

因此,整个更新操作如下所示:
def update
if activity.update(activity_params)
if params[:activity][:images].present?
params[:activity][:images].each do |image|
activity.images.attach(image)
end
end
flash[:success] = 'Updated!'
respond_with activity, location: activity_path(activity)
else
flash[:error] = 'Not updated'
respond_with activity, location: activity_path(activity)
end
end

并从允许的参数中删除它:
images:[]

关于ruby-on-rails - 在 Rails 6 中使用 has_many_attached 更新图像的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803964/

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