我正在尝试创建一个delete方法来删除与Rails中的事件相关的图像。在发送代码之前,我实际上已经使其工作了,但是现在我的问题是使用Ajax进行操作。以下代码可以正常工作,并使用更新的图像列表刷新我的表单页面。
Event.rb
has_many_attached :images
Admin_events_controller
def destroy_single_image
@event_image = ActiveStorage::Attachment.find_by(blob_id)
@event_image.purge
redirect_back(fallback_location: request.referer)
end
查看
<% if @event.images.any? %>
<% @event.images.each do |event_image| %>
<%= image_tag event_image, height: "100" %>
<%= link_to 'Remove', destroy_single_image_admin_events_path(id: event_image.id),
method: :delete,
data: { confirm: 'Are you sure?' } %>
<% end %>
<% end %>
路线
resources :events do
collection do
get 'destroy_multiple_images'
# get 'destroy_single_image'
post 'destroy_single_image', action: "destroy_single_image"
end
end
请求参数(旧的请求参数导致我更改了routes文件中的操作。我这样做是否正确?它现在可以如上所述工作,但是我担心任何安全性问题)
{"_method"=>"delete", "authenticity_token"=>"CrL7UAG671aSMiIVL6slvukHWT5S1YEaSEEdgtu1m8PKGm0deZk15uoPhXzhq/1oLNVp5otd8ai55tM0sLNGpw==", "controller"=>"admin/events", "action"=>"destroy", "id"=>"destroy_single_image", "format"=>"769"}
所以我的问题现在是destroy_single_image方法中的response_to:js。如果我像下面这样添加。
Admin_events_controller
def destroy_single_image
@event_image = ActiveStorage::Attachment.find(params[:id])
@event_image.purge
respond_to :js
#redirect_back(fallback_location: request.referer)
end
我知道服务器日志中收到错误。
我猜测这与路线动作调用有关?我尚未添加js文件,但它与事件控制器位于同一文件夹中,并与方法destory_single_image.js.erb
相同有人能对此有所启发吗?谢谢。
所以回顾一下。上面的代码正常工作,但是在调用服务器时刷新了编辑表单页面。尝试将呼叫远程设置为true时,我现在遇到错误,并且我的控制器中包含了response_to:js。 :D