ナツ19: Deviseのsign_outエラーと、:deleteのエラーへの対処

Deviseで認証機能を実装し、その関係で:deleteの関するエラーを吐きまくってて対処できなかっため、備忘録。

f:id:kiiita:20130903200739p:plain

f:id:kiiita:20130903200849p:plain

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" %>

のみ記述する。

これで記事の削除も、サインアウトも両方できました。
やれやれ・・・(๑- -๑)

広告を非表示にする