设计 destroy_session_path 不工作 rails4

Devise destroy_session_path not working rails4

我是 rails 的新手,因此非常感谢您的帮助。我似乎无法弄清楚我做错了什么。

我已经成功设置了 GEM 设计,我正在尝试使用无法正常工作的 'logout route path'。

任何帮助将不胜感激。非常感谢

控制台中的错误消息

railties (4.1.6) lib/rails/application.rb:144:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'


  Rendered /Users/ARTLoe/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_trace.html.erb (3.6ms)
  Rendered /Users/ARTLoe/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/routing_error.html.erb within rescues/layout (27.6ms)


Started GET "/userrs/sign_out" for 127.0.0.1 at 2015-03-28 14:18:13 +0000

ActionController::RoutingError (No route matches [GET] "/userrs/sign_out"):
  web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:22:in `middleware_call'
  web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.1.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.1.6) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.1.6) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.1.6) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.1.6) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.1.6) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.1.6) lib/rails/rack/logger.rb:20:in `call'
  quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
  actionpack (4.1.6) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  activesupport (4.1.6) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  actionpack (4.1.6) lib/action_dispatch/middleware/static.rb:64:in `call'
  rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
  railties (4.1.6) lib/rails/engine.rb:514:in `call'
  railties (4.1.6) lib/rails/application.rb:144:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /Users/ARTLoe/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'


  Rendered /Users/ARTLoe/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_trace.html.erb (1.6ms)
  Rendered /Users/ARTLoe/.rvm/gems/ruby-2.1.2/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/routing_error.html.erb within rescues/layout (22.9ms)

我的架构

ActiveRecord::Schema.define(version: 20150317223638) do

  create_table "userrs", force: true do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "userrs", ["email"], name: "index_userrs_on_email", unique: true
  add_index "userrs", ["reset_password_token"], name: "index_userrs_on_reset_password_token", unique: true

end

我的观点

  <div>
    <span>hi <%= current_userr.email %></span>
    <span>would you like to <%= link_to 'view your account', recruiters_path %></span> 
    <span>not <%= current_userr.email %>?</span>
    <span><%= link_to 'log out', destroy_userr_session_path %></span>
  </div>

路线

new_userr_session GET    /userrs/sign_in(.:format)       devise/sessions#new
            userr_session POST   /userrs/sign_in(.:format)       devise/sessions#create
    destroy_userr_session DELETE /userrs/sign_out(.:format)      devise/sessions#destroy
           userr_password POST   /userrs/password(.:format)      devise/passwords#create
       new_userr_password GET    /userrs/password/new(.:format)  devise/passwords#new
      edit_userr_password GET    /userrs/password/edit(.:format) devise/passwords#edit
                          PATCH  /userrs/password(.:format)      devise/passwords#update
                          PUT    /userrs/password(.:format)      devise/passwords#update
cancel_userr_registration GET    /userrs/cancel(.:format)        devise/registrations#cancel
       userr_registration POST   /userrs(.:format)               devise/registrations#create
   new_userr_registration GET    /userrs/sign_up(.:format)       devise/registrations#new
  edit_userr_registration GET    /userrs/edit(.:format)          devise/registrations#edit
                          PATCH  /userrs(.:format)               devise/registrations#update
                          PUT    /userrs(.:format)               devise/registrations#update
                          DELETE /userrs(.:format)               devise/registrations#destroy

在您的错误消息中,您的 link 正在 link 执行 "/userrs/sign_out"GET 操作(顺便说一句,拼写正确吗?)。您需要将其直接指向 DELETE 操作。因此,将您的代码更改为:

<%= link_to 'log out', destroy_userr_session_path, method: :delete %>