2012-03-27 5 views
1

この問題については、さまざまなサイトで数十の質問があります。私は多くのことを試しましたが、私はまだDELETEメソッドを使ってリンクを作ることができません。Deviles gemを使用してRailsアプリでサインアウトできません。/ users/sign_outに一致するルートはありません

  • 工夫2.0.4
  • レール:3.2.2
  • ルビー:

    私は、空のRailsアプリケーションに

    バージョンを作成しました1.9.2

  • RVM:1.10 .3

私はdevise gemをインストールした後、これらのc ommands:私が試してみました

rails generate devise:install 
rails generate devise User 

の修正は以下の通りです:

初期リンク:

<%= link_to "Sign out", destroy_user_session_path, :method => 'delete' %> 
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %> 

を追加しました:

<%= link_to "Sign out", destroy_user_session_path %> 

私はダニで、それらなしでdeleteメソッドを追加this to application.html.erb:

<%= javascript_include_tag :defaults %> 

私は資産/ JavaScriptの/ application.jsに次の行をコメント解除:、私も仕事にGETリンクを取得しようとした

= require jquery 
= require jquery_ujs 

を設定/初期化子/ devise.rb

config.sign_out_via = : delete 
からこの行を変更どんなに私がしようとするもの

config.sign_out_via = :get if Rails.env.test? 

、リンクはこの結果にDELETE:これまで

No route matches [GET] "https://stackoverflow.com/users/sign_out" 

GETリンクは同様に動作しません。

Noルートの一致を "/"

[GET]を、私はもちろん、サーバを再起動しようとしています。

レーキルートはこれを含んでいます。事前に

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

感謝を。

答えて

8

があります。RB

config.sign_out_via = :get

からconfig.sign_out_via = :delete

変更あなたが使用している場合を見つける:あなたが使用していることを確認します:メソッド=:取得し、あなたが使用している場合:使用して削除:メソッド=>:あなたのリンクで、削除をあなたは文の場合は、おそらくそれは、pの理由である、開発モードで実行し、テストされていないあなたの例ではRAILS_ENV

をチェックするために使用する必要がありますので、ラウンドそれを交換する必要があり、生産における

頑なに働かない。

サーバを初期化してから、サーバを再起動してください。

+0

ストレート単純な答えを設定してみてください。私はHerokuを使いました:GETして、生産(Heroku)でコードを中断させるので、 ':get'に変更するのではなく、両方の要求を処理できるようにリストを設定しなければなりませんでした。 .sign_out_via =:delete、:get'そしてそれは私のために働いた。 –

2

このヘルパーは、常に私の作品:

link_to "Logout", destroy_user_session_path, :method => :delete 

は、たぶん、あなたが適切にログインしていませんか?あなたはif current_userと確認できます

+0

私はログインしていますが、ログアウトのリンクはuser_signed_inの場合にのみ表示されますか?本当です。 – afaf12

0

あなたのルートファイルを確認できますか?

具体的devise_forコール

はまた、パスを明示的

devise_for :users, path_names: { sign_out: 'sign_out' }

関連する問題