39
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Rails 4.x] Devise で Sign Out が Routing Error になる際の対応。(method の delete が get になる場合)

Posted at

Rails4でのユーザー認証に、Deviseを使用しています。
Deviseでサインアウトする際に、Routing Errorが発生しました。

問題

routingでは以下の様になっています。

destroy_user_session DELETE     /users/sign_out(.:format)                         devise/sessions#destroy

viewは以下の感じです。

header.html.erb
<%= link_to "ログアウト", destroy_user_session_path, method: :delete, :class => 'navbar-link'  %> 

対応

delete が動かないので、get
以下を config/routes.rb に追記。

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

こうすると、routingが新しく足されて、/users/sign_outを上書きする形になります。

users_sign_out GET        /users/sign_out(.:format)                         devise/sessions#destroy

viewは書き換えても変えなくてもいいですが、一応変えます。

header.html.erb
<%= link_to "ログアウト", user_sign_out_path, method: :delete, :class => 'navbar-link'  %> 

原因

はっきりわかっていませんが、Herokuアプリはdeleteに対応していないとか。。。

参考

39
39
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?