アプリでの認証に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]