ナツ19: Deviseのsign_outエラーと、:deleteのエラーへの対処
Deviseで認証機能を実装し、その関係で:deleteの関するエラーを吐きまくってて対処できなかっため、備忘録。
Devise導入当初、ユーザーのサインアウト処理で、
No route matched [GET] "/user/sign_out"
と出てくる問題が発生した。
それを対処するために、サイトを検索した結果、
config/initializers/devise.rb
config.sign_out_via = :delete
を
config.sign_out_via = :get
に変えればOKってことで、変更してた。
(だいぶ前にやってたからこんなことしてたの忘れてたわ)
これによってサインアウトはバッチリできるようになったけど、
「ポストとかのDeleteができなくなってる」ってことに気づいた。
Deleteのリンクは、
<%= link_to '削除', post, method: :delete, data: { confirm: 'Are you sure?"} %>
という記述をしてて、ここには間違いがないことを確認できた。
次に確かめたのが、
app/views/layout/application.html.erb
<%= javascript_include_tag :defaults %>
となっている所。
これを、
<%= javascript_include_tag "application"%>
と変更した。
そしたらpostの削除ができるようになった!!
これで万事OK!って息巻いてたら、
今度はユーザーのサインアウトが再びできなくなってる(T_T)
原因は、
<%= javascript_include_tag :defaults %>
を消したことだと思う。
なので、
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag "application" %>
を両方記述したけど、もちろんダメ。
それで最初のところに戻って、
config/initializers/devise.rb
config.sign_out_via = :delete
に戻す。
そして、
app/views/layout/application.html.erb
<%= javascript_include_tag "application" %>
のみ記述する。
これで記事の削除も、サインアウトも両方できました。
やれやれ・・・(๑- -๑)