我有一个应用程序,用户可以销毁连接到同一帐户的其他用户。
我使用Devise进行身份验证,并希望能够允许用户销毁其他用户。我有点工作,但即使我正在删除其他用户,我也在努力防止设法退出。
我创建了自己的registrations_controller:
class RegistrationsController < Devise::RegistrationsController
def new
super
end
def create
super
end
def edit
...
super
end
def update
...
end
def destroy
resource.destroy
set_flash_message :notice, :destroyed
redirect_to :root
end
end
破坏我的每个用户的链接如下所示:
<%= link_to "Yes", registration_path(@user), :remote => true, :method => :delete, :class => "button" %>
但是,每次单击此链接时,即使它是我要删除的另一个用户,也会将其记录下来。
有什么想法吗?
答案 0 :(得分:0)
我遇到了同样的问题,并意识到这不是设计问题。将其添加到您的布局:
<%= csrf_meta_tag %>
Rails希望每个响应都有CSRF身份验证代码。 Rails只会忽略一个没有的GET请求,但是如果你没有将它包含在POST / PUT / DELETE请求中,它将默默地终止当前会话,这会导致你退出。
使用form_for
帮助程序时,会自动包含CSRF代码。但是,Rails javascript AJAX助手(处理远程链接的助手)会查找CSRF元标记,以便它可以将代码附加到请求中。
答案 1 :(得分:0)
对于有此问题的其他人,我通过这篇文章解决了这个问题。基本上设计不能删除除当前用户之外的任何其他用户。您需要添加销毁操作以将用户销毁到显示当前视图的其他控制器: