2012-01-19 31 views
0

をdevise_forに等しく、名前空間といけない仕事は、このroutes.rbをを持っている:のRails 3.1、サインアウトする方法を考案私のRailsアプリで

devise_for :admin 
namespace :admin do 
    root :to => 'dashboard#index' 
    resources :customers 
end 

のlink_to( 'ログアウト'、destroy_admin_session_path、とログアウトしようとした場合:メソッド=> :削除)、 rails print "ルートは[GET]と一致しません"/admin/sign_out ""

ルートを変更せずに修正することはできますか?

答えて

0

はとても安全ですが作品ではない、sign_outアクションのためのGETメソッドを設定することで解決しました。 誰もが同じ問題を持っている場合、これは新しいroutes.rbを次のとおりです。

1

DELETEとGETがあるので、:methodオプションが機能しないようです。あなたは<%= javascript_include_tag :defaults %>

あなたのレイアウトであることを確認してくださいまた、同じ問題については、この質問を読むことができる: No route matches "/users/sign_out" devise rails 3

+0

"devise_for:admin、:sign_out_via => [:get]"の "devise_for:admin"行に解決されました – byterussian

+0

PS:はい、デフォルトはjavascriptが含まれています – byterussian

0

使用していない(私はこれは古い記事です知っているが、私は同じ問題を抱えていた誰もが、より安全な修正をお持ちの場合は

devise_for :admin, :sign_out_via => [ :get ] 
namespace :admin do 
    root :to => 'dashboard#index' 
    resources :customers 
end 

歓迎です

私の場合、私のアプリケーションのレイアウト(admin.html.erbという名前はadminのような名前なので、私はあなたのような名前空間でした)には、次の行をdeleteと一緒に使用する必要がありました。取得しないでください。

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

重要なことは最初の部分ですが、ターボリンクがこのエラーをまったく助けないと思います。

関連する問題