Rails Devise Gem“Sign_Out”无法退出

时间:2016-10-05 09:35:17

标签: ruby-on-rails ruby devise

错误消息

Rails Server
Processing by Devise::SessionsController#destroy as HTML
  User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1      ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
Can't verify CSRF token authenticity
   (0.4ms)  BEGIN
   (0.1ms)  COMMIT

我彻底阅读this article,我的问题不是重复,因为我研究过了!

我尝试过Cramheads建议: 将此添加到routes.rb

devise_for :users do
  get '/users/sign_out' => 'devise/sessions#destroy'
end

我尝试过itkevins建议: 更改了devise.rb的默认设置

config.sign_out_via = :delete
    to
config.sign_out_via = :get

导致路由错误:

uninitialized constant UsersController

我尝试了Rickys的建议: 更改了devise.rb

config.sign_out_via_get_becuase_of = :ie

导致方法错误:

undefined method `sign_out_via_get_because_of=' for Devise:Module           (NoMethodError)

我尝试了橄榄的建议: 稍微调整了代码

link_to :logout, destroy_user_session_path, :method => :delete 
    replacing 
link_to "Sign out", destroy_user_session_path, :method => :delete

我尝试了Victor Martins的建议: 已经在application.js

//= require jquery
//= require jquery_ujs

我尝试过Rezas建议: 在routes.rb

devise_for :users

devise_scope :user do  
   get '/users/sign_out' => 'devise/sessions#destroy'     
end

我也遵循了DuyKhoas的建议:     我包含了javascript

<%= javascript_include_tag(:application) %>

我已经有了这个,所以这也没用。

所有其他建议都是已经建议的修复的重复。

请帮忙! T.T

您可以查看Github Repo here

1 个答案:

答案 0 :(得分:0)

  

未定义方法`sign_out_via_get_because_of ='for Devise:Module
  (NoMethodError)

设计没有sign_out_via_get_because_of帮助器。只有sign_out_via

  

未初始化的常量UsersController

users_controller.rb下没有app/controllers,错误也是如此。

#app/controllers/users_controller.rb

class UsersController < ApplicationController
end
  

对于“sign_out_via”我应该输入什么?

取决于method中的link_to参数。如果是:method => :delete,则为config.sign_out_via = :delete其他config.sign_out_via = :get

  

按照惯例,我应该运行Rails g controller User或Rails g   控制器用户?

您应该运行rails g controller Users