使用回形针和 rails (check_box_tag) 删除多个文件
deleting multiple files with paperclip and rails (check_box_tag)
我已经使用以下技术使用回形针成功上传了多个文件(不使用嵌套属性)
Project.rb
has_many :photos, :dependent => :destroy
Photo.rb
has_attached_file :asset, :styles => { :medium => "300x300>" }
belongs_to :project
photos/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>
Photos_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.......
photos/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
我正在尝试创建一个基于要传递给照片控制器中的 destroy_multiple 操作的复选框的 id 数组。 params[:destruction] 确实产生了正确的 ID。
告诉 destroy_multiple 操作只删除那些 ID 在销毁数组中的资产的最有效方法是什么?
非常感谢您的宝贵时间。
回形针只是保存的资产 (image/video) 和您的 ORM (in our case ActiveRecord 之间的一个 link。
这意味着您仍然可以通过标准 AR 方法(destroy_all
等)执行您想要的所有查询,Paperclip 会根据需要删除相关资产。
因此...
#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 会处理剩下的事情!
我已经使用以下技术使用回形针成功上传了多个文件(不使用嵌套属性)
Project.rb
has_many :photos, :dependent => :destroy
Photo.rb
has_attached_file :asset, :styles => { :medium => "300x300>" }
belongs_to :project
photos/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>
Photos_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.......
photos/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
我正在尝试创建一个基于要传递给照片控制器中的 destroy_multiple 操作的复选框的 id 数组。 params[:destruction] 确实产生了正确的 ID。
告诉 destroy_multiple 操作只删除那些 ID 在销毁数组中的资产的最有效方法是什么?
非常感谢您的宝贵时间。
回形针只是保存的资产 (image/video) 和您的 ORM (in our case ActiveRecord 之间的一个 link。
这意味着您仍然可以通过标准 AR 方法(destroy_all
等)执行您想要的所有查询,Paperclip 会根据需要删除相关资产。
因此...
#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 会处理剩下的事情!