我正在尝试为通过Rails应用中的活动存储上传的图像创建删除功能。
我正在使用devise进行注册,使用邪恶的向导进行多步操作,并使用cancancan进行授权。
但是我遇到了这个错误,我不知道如何使它起作用。我可以看到它与路线有关,但我不明白问题是什么以及如何解决。任何帮助将非常感激。
<%= form_for @user, url: wizard_path, method: :put do |f| %>
<% if @user.clinic_images.attached? %>
<% @user.clinic_images.each do |image| %>
<%= image_tag(image.variant(resize: "100x100")) %>
<%= link_to ‘Delete this image’, delete_image_attachment_registration_url(image.signed_id),
method: :delete,
data: { confirm: ‘Are you sure?’ } %>
<% end %>
<% end %>
<% end %>
Routes.rb
Rails.application.routes.draw do
mount RailsAdmin::Engine => ‘/admin’, as: ‘rails_admin’
devise_for :users, controllers: {:registrations => “users/registrations”}
resources :registration_steps
root ‘pages#index’
get ‘about’, to: ‘pages#about’
get ‘team’, to: ‘pages#team’
get ‘faqs’, to: ‘pages#faqs’
get ‘faqspractitioners’, to: ‘pages#faqspractitioners’
get ‘faqsusers’, to: ‘pages#faqsusers’
get ‘login’, to: ‘pages#login’
get ‘signup’, to: ‘pages#signup’
get ‘search’, to: ‘pages#search’
resources :registrations do
member do
delete :delete_image_attachment
end
end
end
registrations_controllers.rb
def delete_image_attachment
@image = ActiveStorage::Blob.find_signed(params[:id])
@image.purge_later
redirect_to root_path
end
您的路线资源设置有误。由于您正在使用键盘resources
,因此它应该为resources :registrations do
。因为Rails试图找到RegistrationController,而不是RegistrationsController。
您可以在此处了解更多信息:https://rubyinrails.com/2019/04/16/rails-routes-difference-between-resource-and-resources/