【问题标题】:Routing error for /users/Sign_out ; Devise signout doesnt work/users/Sign_out 的路由错误;设计注销不起作用
【发布时间】:2014-11-26 09:16:32
【问题描述】:

我正在按照本教程构建一个类似 dropbox 的应用程序 Build-a-dropbox-like-file-sharing-site-with-ruby-on-rails

我是 Ruby on Rails 的新手,还在学习。根据我使用设计进行身份验证的教程,但它有一个问题,即一旦登录它就不允许我退出。我无法找出解决方案。

我用谷歌搜索并尝试将其添加到 routes.rb

routes.rb

Dropbox::Application.routes.draw do
 #me devise_for :users
 devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end
 root :to => "home#index"
end

我无法解决这个问题。请帮忙。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 devise


    【解决方案1】:

    在路由中你定义了'GET'它应该是'DELETE'

    请将您的路线更改为devise_for :users

    我认为退出的路径是 DELETE 方法。这意味着您的退出链接需要如下所示 <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>. 您的不包含 :method => :delete 部分。

    还请检查您的设计初始化文件。 它应该被定义

    #config/initializers/devise.rb
    config.sign_out_via = :delete
    

    它会起作用的

    例子rails-devise,请克隆这个。

    【讨论】:

    • 我把它改成了 DELETE from GET ;仍然是同样的错误。我检查了初始化文件,它是:delete。还有更多提示吗?
    • 非常感谢。但是我这里有个问题。我从未使用过设计,也不知道在哪里添加注销链接。结构是 views/devise/sessions/new.html.erb 。我应该在那里添加这个吗?对不起,如果这是一个简单的问题。我是新手。
    • @SwethaKogatam - 我添加了示例 rails-devise 示例。
    • 谢谢。它帮助很大。
    【解决方案2】:

    这就够了:

    devise_for :users
    

    你的错误

    Routing error for /users/Sign_out
    

    我看到你使用的路线不正确,应该是

    /users/sign_out
    

    不是

    /users/Sign_out
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2014-01-29
      • 1970-01-01
      • 2023-03-26
      • 2015-03-23
      相关资源
      最近更新 更多