我創建了一個新的rails項目,只有一個主頁的生成控制器來測試它。爲什麼設計將sign_up錯誤重定向到不同的頁面?
我設計的模型是User
,所以註冊頁面是http://localhost:3000/users/sign_up
。
如果我觸發錯誤,例如,提交不給密碼的形式,我重定向到http://localhost:3000/users
。
我怎麼能留在http://localhost:3000/users/sign_up
犯錯誤後?
我讀this question和the only answer建議在控制器中使用redirect_to :back
。
的問題是,我不重寫控制器。如果壓倒一切是解決問題的唯一方法,請解釋它應該如何。
這是我routes.rb
Rails.application.routes.draw do
root to: "home#index"
get 'home/index'
devise_for :users
end
Here是Devise::RegistrationsController
的源代碼。我應該如何覆蓋new
或create
以實現我所需要的功能?
是軌道的默認行爲。當發生任何錯誤時,它將再次呈現該表單。所以表單的所有值都保持不變。如果您使用重定向回來,併發生任何錯誤,它會給新的形式。表單的所有值將被破壞 – Vishal
它再次呈現表單,這是正確的。問題是URL從'/ users/sign_up'改變爲'/ users'。 – Wit
你可以發佈特定於你的應用程序中的設計路線(和控制器/操作)嗎? – BigJ