我讀過&嘗試張貼在衆多的SO職位的解決方案(即here,here,並且here)以及制定的回答上how to change the path after a failed registration,並制定的RegistrationsController code,都無濟於事。重定向到root_path失敗後製定的用戶註冊
而不是做在/lib/
文件夾中的自定義失敗的方法最喜歡的建議的,這似乎是解決最容易的地方/覆蓋,這將是在RegistrationsController#create
方法在它的底部:
else
clean_up_passwords resource
respond_with resource
end
這是(我假設)正確地迴應了user
(即將它們重定向到root_path/users
),但這裏有一個棘手的部分:我在用戶註冊時創建了一個嵌套模型,這對於Devise來說非常困難。我擔心,如果我搞砸RegistrationsController#create
方法,我會打破我的完美工作嵌套模型。
有人還提到Devise解決方案沒有爲他們工作,但後來得到它改變路由問題後工作。我懷疑是這種情況我,但這裏是我的routes.rb
文件,以防萬一:
devise_for :users, :controllers => { :registrations => "registrations" }
resources :users
resources :users do
resources :lockers
end
resources :lockers do
resources :products
end
resources :products
resources :lockups
match '/user/:id', :to => 'users#show', :as => :user
root :to => 'home#index'
我完全明白任何幫助,任何人都可以提供給我。我對Rails仍然很陌生,但我總是樂於學習。
編輯:感謝激情,我一直在試圖找出如何改變註冊控制器中最後else
塊的邏輯。下面就是我(以及我的小白邏輯)嘗試:
# Obviously cleared all the fields since it made no mention of resource
# redirect_to root_path
# Too many arguments since root_path takes 0
# redirect_to root_path resource
# Just bombed, something about a String somethingorother
# render root_path
# Heh, apparently call 'respond_with' and 'redirect_to' multiple times in one action
# respond_with resource
# redirect_to root_path
你可以請嘗試更詳細。爲什麼不重寫'devise/registrations'的'else'塊。你面臨什麼問題? –
@激情我可以嘗試,但是我嘗試重寫'RegistrationController#create'方法將近十個小時,我每次都設法搞砸它。我不理解Ruby的繼承/重寫,甚至不知道如何嘗試,而不必擔心已經破壞了我的功能註冊。 –