Rails / Devise:找不到具有' id' = sign_out

时间:2015-12-25 09:46:53

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

我从Rails收到一条错误消息,指出找不到ID为#sign;'的用户。当我尝试注销用户会话时出现错误。应用程序正在查看GET路由而不是我希望它的DELETE路由。

我查看了其他类似错误的帖子,他们认为路线配置不正确。但我似乎无法弄清楚我的应用程序正在发生什么。我尝试了几件事:

  • 切换设计路线和用户资源的顺序
  • 明确调出删除方法
  • 用于注销的链接的方法/目标路径的各种组合

这些选项似乎都不适合我。

以下是我的相关文件:

的routes.rb

Rails.application.routes.draw do
  root to: 'welcome#index'
  devise_for :users
  resources :users, only: [:index,:show]

  resources :images, only: [:index, :show, :update]
  resources :challenges
end

我也尝试过嵌套并直接调用路径:

devise_for :users do
  get '/users/sign_out' => 'devise/sessions#destroy'
end
resources :users, only: [:index,:show]

我的注销链接:

%li= link_to "Logout", destroy_user_session_path, :method => :delete

运行佣金路线(相关路线):

                  Prefix Verb   URI Pattern                       Controller#Action
    destroy_user_session DELETE /users/sign_out(.:format)         devise/sessions#destroy
                   users GET    /users(.:format)                  users#index

使用"退出"链接收到此错误:

Couldn't find User with 'id'=sign_out

和与请求相关的参数是:

Request

Parameters:

{"id"=>"sign_out"}

无论出于何种原因,该链接仍会生成GET请求:

Started GET "/users/sign_out" for ::1 at 2015-12-25 03:35:11 -0600
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}

有没有人对接下来要改变/尝试什么有什么建议?如果您需要来自任何其他文件的更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

  1. 我的application.js文件需要默认评论:

    //= require jquery

    //= require jquery_ujs

  2. 我的layouts / application.haml文件需要CSRF元标记:

    = csrf_meta_tags

  3. 感谢sevenseacat让我指向正确的方向!