设计错误后重定向

时间:2013-04-07 14:15:01

标签: ruby-on-rails ruby authentication devise

在Devise中注册并忘记密码视图时,如果出现错误,它会将您重定向到父页面。

因此,在注册页面(/users/sign_up)上,如果您收到错误,它会将您重定向到/ users并显示错误。

在忘记密码页面(/users/password/new)上,如果您收到错误,则会将您重定向到/users/password并显示错误。

如何更改它以使其与登录页面完全相同,如果出现错误,它将保留在同一页面上并显示错误。

我查看了Devise并找不到重定向的位置。

这是我的Devise路线:

devise_for :users, :skip => [:sessions]
as :user do
  get 'signin' => 'devise/sessions#new', :as => :new_user_session
  post 'signin' => 'devise/sessions#create', :as => :user_session
  get 'signup' => 'devise/registrations#new', :as => :new_user
  post 'signup' => 'devise/registrations#create', :as => :create_user_session
  delete 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session
  get "/account" => "devise/registrations#edit"
end

2 个答案:

答案 0 :(得分:3)

我认为问题是你的post 'signup'命名不正确。您的用户注册POST到哪个路径?

post 'signup' => 'devise/registrations#create', :as => :create_user_session

应该是:

post 'signup' => 'devise/registrations#create', :as => :user_registration

以下是我解决此问题的routes.rb

as :user do
  get "/signin" => "devise/sessions#new", :as => :new_user_session
  post "/signin" => "devise/sessions#create", :as => :user_session
  delete "/signout" => "devise/sessions#destroy", :as => :destroy_user_session
  get "/signup" => "devise/registrations#new", :as => :new_user_registration
  post '/signup' => 'devise/registrations#create', :as => :user_registration
end

答案 1 :(得分:-2)

它不会将您重定向到任何地方,这些是设计发布到的网址。

如果您想编辑这些网址,请参阅维基以获得一个良好的起点: https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes