首页 > 解决方案 > 指向不同位置的 Rails 路线

问题描述

尝试注销用户时出现错误。显示和删除用户工作正常。我得到:

NoMethodError in Users#show. 
undefined method `email' for nil:NilClass

我注意到的另一个奇怪的事情是传递的参数

Parameters: {"id"=>"sign_out"}

我的观点:

- if user_signed_in?
  = link_to destroy_user_session_path, class: "nav-link", :action => 'go' do
    .nav-icon.icon-logout
      .lock
         = image_tag("icons/logout.png")
      .unlock
         = image_tag("icons/logout-hover.png")
         Logout
- else
 = link_to new_user_session_path, class: "nav-link", :action => 'go' do
   .nav-icon.icon-login
     .lock
       = image_tag("icons/login.png")
     .unlock
       = image_tag("icons/login-hover.png")
       Login

我的路线:

devise_for :users
  resources :users, :only =>[:show]
  match '/users',   to: 'users#index', via: 'get'
  match '/users/:id',     to: 'users#show', via: 'get'
  match '/users/:id' => 'users#destroy', :via => :delete

标签: ruby-on-railsdeviseroutes

解决方案


正如在此处发布的 关于通过设计破坏会话“找不到具有 'id'=sign_out 的用户” 我错过了method: :delete我的观点。

= link_to destroy_user_session_path, method: :delete, class: "nav-link", :action => 'go' do


推荐阅读