【发布时间】:2019-04-23 23:10:13
【问题描述】:
我有一个包含产品的应用程序 - 每个产品都有注释/常见问题解答/附件等内容。
我可以成功删除笔记和常见问题,但不能删除 Active Storage 附件。
有人可以帮忙吗?我尝试在 Products 控制器中使用单独的方法,但没有奏效,因此我当前的行使用的是 Uploads 控制器。
我得到的当前错误是:
NameError in UploadsController#destroy
uninitialized constant Upload
上传控制器:
class UploadsController < ApplicationController
load_and_authorize_resource :nested => :product
def destroy
@product = Product.find(params[:id])
@upload = @product.ActiveStorage::Attachment.find(params[:id])
@upload.purge
redirect_back(fallback_location: products_path)
end
end
产品视图:
<% @product.uploads.each do |upload| %>
<% if can? :destroy, upload %>
<td><%= link_to t('X', :default => t("X")),
product_upload_path(@product, upload),
:method => :delete,
:data => { :confirm => t('.confirm', :default => 'Are you sure you want to delete this attachment?') },
:id =>'delete-faq' %></td>
<% end %>
<% if upload.variable? %>
<span><%= image_tag upload.variant(resize: "100x100"), class: "other-image" %></span>
<% elsif upload.previewable? %>
<span><%= link_to image_tag(upload.preview(resize: "100x100"), class: "other-image"), rails_blob_path(upload), target: "_blank" %></span>
<% else %>
<span><%= link_to image_tag("paper.jpg", size: "100x100", class: "other-image"), rails_blob_path(upload), target: "_blank" %></span>
<% end %>
<% end %>
路线:
resources :products do
resources :notes
resources :faqs
resources :uploads
end
【问题讨论】:
-
我也尝试过使用 @upload = @product.upload.find(params[:id]) 代替,它给出了同样的错误。
-
谢谢 - 我已经尝试过了,不幸的是无法让它为我工作,但我终于让它工作了,所以发布了一个答案。
标签: ruby-on-rails ruby-on-rails-5 rails-activestorage