首页 > 解决方案 > Rails Active Storage 删除附件

问题描述

我目前正在从事一个小型铁路项目。我有一个使用devisegem 创建的用户模型。允许用户在上面添加多张照片,devise/registrations/edit为此我用来active_storage存储图像。此外,这些图像必须能够被删除。如何添加删除按钮来一张一张地删除这些图像?

设计/注册/edit.html.erb:

<div class="row">
 <div class="col-6">
  <%= f.label :photos_of_you %> 
 </div>
 <div class="col-6">
  <%= f.file_field :images, multiple: true %>
 </div>
</div>
<div class="row">
 <div class="col-12">
  <% if resource.images.attached? %>
  <div class="d-inline-block image-gallery">
   <% (0...resource.images.count).each do |i| %>
    <%= image_tag (resource.images[i]) %>
   <% end %>
  </div>
  <% end %>
 </div>
</div>

application_controller.rb 上:

class ApplicationController < ActionController::Base

  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:full_name, :gender])
    devise_parameter_sanitizer.permit(:account_update, keys: [:full_name, :gender, :avatar, images: [] ])
  end
end

在模型user.rb上:

class User < ApplicationRecord

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  has_one_attached :avatar, dependent: :destroy
  has_many_attached :images, dependent: :destroy
end

标签: ruby-on-rails

解决方案


推荐阅读