[英]Why does Devise redirect sign_up error to a different page?
我創建了一個新的Rails項目,僅使用生成的主頁控制器進行了測試。
我的設計模型是User
,所以注冊頁面是http://localhost:3000/users/sign_up
。
如果我觸發錯誤,例如,在不提供密碼的情況下提交表單,則會重定向到http://localhost:3000/users
。
發生錯誤后,如何留在http://localhost:3000/users/sign_up
?
我讀了這個問題 , 唯一的答案建議在控制器中使用redirect_to :back
。
問題是我沒有覆蓋控制器。 如果覆蓋是解決問題的唯一方法,請說明應如何解決。
這是我的routes.rb
Rails.application.routes.draw do
root to: "home#index"
get 'home/index'
devise_for :users
end
這是Devise::RegistrationsController
的源代碼。 我應該如何覆蓋new
或create
來實現我所需要的?
我強烈建議您不要這樣做。 Rails應用程序的默認行為(遵循路由命名約定)就是您描述的方式。 但是,如果您確實需要這樣做,請按以下步驟操作。
首先,轉到您的routes.rb
並:
devise_scope :user do
post 'users/sign_up', to: 'devise/registrations#create'
end
編輯
然后,生成設計視圖,以便您可以覆蓋表單的默認行為。
rails g devise:views
然后,打開您的app/views/devise/registrations/new.html
文件並編輯form_for
行,如下所示:
<%= form_for(resource, as: resource_name, url: users_sign_up_path) do |f| %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.