提问人:Maria Maximova 提问时间:5/30/2020 最后编辑:Maria Maximova 更新时间:5/30/2020 访问量:247
使用 Devise 删除附件(头像)
Delete an attachement (an avatar) with Devise
问:
在我的视图文件中,我想添加一个链接来删除当前头像(如果已附加)。我最终得到了这样的东西:registrations/edit.html.erb
<% if current_user.avatar.attached? %>
<%= link_to "Remove avatar", { action: :remove_avatar }, method: :put %>
<% end %>
在自定义(继承自 )中,我定义了一个方法:registrations_controller
Devise::RegistrationsController
:remove_avatar
def remove_avatar
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
resource.avatar.purge_later
end
但是我遇到了这个错误,这可能是由于缺少路由设置引起的。
没有路由匹配 {:action=>“remove_avatar”, :controller=>“registrations”, :locale=>:ru}
我能做些什么来link_to这种方法?谢谢。
答:
0赞
sflang
5/30/2020
#1
也许你需要这样的东西
put "remove_avatar", to: "registrations#remove_avatar"
在您的 routes.rb 文件中。
也许由于您的目录结构,它可能会变得比这更混乱,但它应该可以工作
评论
0赞
Maria Maximova
5/30/2020
我用过这个,不幸的是,它也没有用devise_for :users, :controllers => { registrations: 'registrations' } do put "remove_avatar", to: "registrations#remove_avatar" end
0赞
sflang
5/30/2020
你也可以命名一个路由,比如: ,然后去 rake 路由 找到这个新创建的路由的名称(假设它是 devise_my_remote_avatar),这样你就可以做 ,这将直接解析到该路由put "remove_avatar", to: "registrations#remove_avatar", as: "my_remove_avatar"
link_to "Remove avatar", devise_my_remote_avatar_path
0赞
Maria Maximova
5/30/2020
问题在于,当代码放在devise_for之间时,它甚至不会生成该特定路由。我想我的路线做错了什么
0赞
sflang
5/31/2020
看起来不接受块。可能您正在寻找允许语法的方法devise_for
devise_scope
devise_scope do end
评论