2

アプリでの認証にdeviseを使用しています。私のルートファイルは次のようになります。

  devise_scope :user do
    get "/password_reset" => "devise/passwords#new", :as => "new_user_password"
    post "/password_reset/complete" => "devise/passwords#create", :as => "user_password"
    get "/password_renew" => "devise/passwords#edit", :as => "edit_user_password"
    put "/password_renew/complete" => "devise/passwords#update", :as => "password"
  end

完全な routes.rb ファイル: http://hastebin.com/vofaluhera.coffee

rake ルートを実行すると、これらのルートがうまく機能することがわかります。

 new_user_password GET  /password_reset(.:format)            devise/passwords#new
     user_password POST /password_reset/complete(.:format)   devise/passwords#create
edit_user_password GET  /password_renew(.:format)            devise/passwords#edit
          password PUT  /password_renew/complete(.:format)   devise/passwords#update

ただし、ルート /password_reset にアクセスすると、次のエラーが発生します。

Could not find devise mapping for path "/password_reset"

また、devise_for に切り替えると正常に動作しますが、非推奨の警告が表示され、不要なルートが追加されます。だから基本的にはdevise_scopeにこだわりたい

このエラーの修正を手伝ってください。

編集:devise_scopeを使用する前に追加する必要があることがわかりました

devise_for :users, :skip => [:passwords]
4

0 に答える 0