我有我的rails应用程序和Devise设置使用JSON API来进行用户注册和登录.副作用是密码重置电子邮件中的edit_password_url意外地将用户发送到:
http://localhost:3000/api/v1/password/edit?reset_password_token=ZzyPCgmspN2964ENUkSS
什么时候它不应该有api / v1 /,并且应该发送给:
http://localhost:3000/password/edit?reset_password_token=ZzyPCgmspN2964ENUkSS
我一直在寻找,但无法弄清楚在哪里解决这个问题.
我创建了以下内容:
Api::V1::SessionsController < Devise::SessionsController
和
Api::V1::RegistrationsController < RegistrationsController
我有一个常规的RegistrationsController继承自devise,但不是一个常规的SessionsController,所以我只是直接从设计继承.
谢谢您的帮助!
编辑:
的routes.rb
namespace :api,defaults: {format: 'json'} do namespace :v1 do resources :users devise_for :users,:path => '',path_names: {sign_in: "login",sign_out: "logout"},controllers: { omniauth_callbacks: "authentications",registrations: "registrations"} end end devise_for :users,registrations: "registrations"} resources :users
编辑2:rake路线输出
new_api_v1_user_session GET /api/v1/login(.:format) api/v1/sessions#new {:format=>"json"} api_v1_user_session POST /api/v1/login(.:format) api/v1/sessions#create {:format=>"json"} destroy_api_v1_user_session DELETE /api/v1/logout(.:format) api/v1/sessions#destroy {:format=>"json"} api_v1_user_omniauth_authorize GET|POST /auth/:provider(.:format) authentications#passthru {:provider=>/twitter|facebook/,:format=>"json"} api_v1_user_omniauth_callback GET|POST /auth/:action/callback(.:format) authentications#(?-mix:twitter|facebook) {:format=>"json"} api_v1_user_password POST /api/v1/password(.:format) api/v1/passwords#create {:format=>"json"} new_api_v1_user_password GET /api/v1/password/new(.:format) api/v1/passwords#new {:format=>"json"} edit_api_v1_user_password GET /api/v1/password/edit(.:format) api/v1/passwords#edit {:format=>"json"} PUT /api/v1/password(.:format) api/v1/passwords#update {:format=>"json"} cancel_api_v1_user_registration GET /api/v1/cancel(.:format) registrations#cancel {:format=>"json"} api_v1_user_registration POST /api/v1(.:format) registrations#create {:format=>"json"} new_api_v1_user_registration GET /api/v1/sign_up(.:format) registrations#new {:format=>"json"} edit_api_v1_user_registration GET /api/v1/edit(.:format) registrations#edit {:format=>"json"} PUT /api/v1(.:format) registrations#update {:format=>"json"} DELETE /api/v1(.:format) registrations#destroy {:format=>"json"} sessions GET /sessions(.:format) sessions#index POST /sessions(.:format) sessions#create new_session GET /sessions/new(.:format) sessions#new edit_session GET /sessions/:id/edit(.:format) sessions#edit session GET /sessions/:id(.:format) sessions#show PUT /sessions/:id(.:format) sessions#update DELETE /sessions/:id(.:format) sessions#destroy authentications GET /authentications(.:format) authentications#index POST /authentications(.:format) authentications#create new_authentication GET /authentications/new(.:format) authentications#new edit_authentication GET /authentications/:id/edit(.:format) authentications#edit authentication GET /authentications/:id(.:format) authentications#show PUT /authentications/:id(.:format) authentications#update DELETE /authentications/:id(.:format) authentications#destroy new_user_session GET /login(.:format) devise/sessions#new user_session POST /login(.:format) devise/sessions#create destroy_user_session DELETE /logout(.:format) devise/sessions#destroy user_omniauth_authorize GET|POST /auth/:provider(.:format) authentications#passthru {:provider=>/twitter|facebook/} user_omniauth_callback GET|POST /auth/:action/callback(.:format) authentications#(?-mix:twitter|facebook) user_password POST /password(.:format) devise/passwords#create new_user_password GET /password/new(.:format) devise/passwords#new edit_user_password GET /password/edit(.:format) devise/passwords#edit PUT /password(.:format) devise/passwords#update cancel_user_registration GET /cancel(.:format) registrations#cancel user_registration POST / registrations#create new_user_registration GET /sign_up(.:format) registrations#new edit_user_registration GET /edit(.:format) registrations#edit PUT / registrations#update DELETE / registrations#destroy
编辑3:
所以我一直在测试一些东西,在设计电子邮件模板中,路径edit_password_url就在那里,并且用于生成上面错误的url,但是当我做rake路由时,只存在edit_user_password_url.