0

認証にデバイスを使用していますが、今のところ、自動的にログインするユーザーをサインアップできます。

ただし、デバイスはパスを認識しませんlocalhost:3000/users/sign_out

エラーが発生します

No route matches [GET] "/users/sign_out"

私のルートには、ユーザー用のデバイスを生成したため、devise_for :users ステートメントがあります。

私は自分のユーザーモデルにもうまく設定されています.user.rbは次のようになります

class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end

私のレーキルートは以下を示しています

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

私のURLパスが認識されない理由を誰でも知っています

4

1 に答える 1

0

これは、ルートがGETアクションではなくDELETEHTTPアクションを想定しているためです。

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

ブラウザにURLを入力すると、そのURLにGETアクションが送信されます。

deviseに、devise.rbのsign_outルート変更に対するGETアクションを受け入れさせるには、次のようにします。

config.sign_out_via = :delete

to 

config.sign_out_via = :get

別の方法は、ビュー内のリンクにを追加する:method => :deleteことです。これにより、Deviseが期待するように、DELETEアクションがサーバーに送信されます。

于 2012-11-14T09:03:22.893 に答える