gpt4 book ai didi

ruby-on-rails - 使用回形针和 rails 删除多个文件(check_box_tag)

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

我已经使用以下技术使用回形针成功上传了多个文件(不使用嵌套属性)

项目.rb

has_many :photos, :dependent => :destroy

照片.rb

has_attached_file :asset, :styles => { :medium => "300x300>" }
belongs_to :project

照片/new.html.erb

<%= form_for @photo, :html => { multipart: true } do |f| %> 


<div>
<%= f.label :asset, 'Project Photos', class: 'label1' %>

<%= file_field(:photo, :asset, :multiple => true) %>

</div>

<div>
<%= f.submit "Add photos to project" %>
</div>

照片 Controller :

def create

@project = Project.find(params[:id])
@client = Client.find(params[:id])


params[:photo][:asset].each do |file|
@photo = @project.photos.build(:asset => file)
if
@photo.save.......

照片/show.html.erb

<div>
<% @project.photos.each do |p| %>

<%= image_tag(p.asset.url(:square)) %>

<%= check_box_tag 'destruction[]', p.id %>

<% end %>

路线文件:

resources :photos do
collection do
delete 'destroy_multiple'
end
end

我正在尝试创建一个基于要传递给照片 Controller 中的 destroy_multiple 操作的复选框的 id 数组。 params[:destruction] 确实产生了正确的 ID。

告诉 destroy_multiple 操作只删除那些 ID 在销毁数组中的 Assets 的最有效方法是什么?

非常感谢您的宝贵时间。

最佳答案

destroy_all

Paperclip 只是保存的 Assets (图像/视频)和您的 ORM 之间的链接(在我们的例子中是 ActiveRecord)。

这意味着您应该仍然能够通过标准 AR 方法(destroy_all 等)执行您想要的所有查询,并根据需要使用 Paperclip 删除相关 Assets 。

因此……

#config/routes.rb
resources :photos do
delete :destroy_multiple, action: :destroy, on: :collection
end

#app/controllers/photos_controller.rb
class PhotosController < ApplicationController
def destroy
ids = params[:destruction] || params[:id]
Photo.destroy_all ids if ids
end
end

Paperclip 会处理剩下的事情!

关于ruby-on-rails - 使用回形针和 rails 删除多个文件(check_box_tag),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225773/

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