多数の SO 投稿 (つまり、 here、here、およびhere ) に投稿されたソリューションを読んで試してみました。また、失敗した登録後にパスを変更する方法に関する Devise の回答と、Devise のRegistrationsController コードもすべて役に立ちませんでした。
/lib/
ほとんどの提案のようにフォルダーでカスタムの失敗メソッドを実行する代わりに、これを修正/オーバーライドする最も簡単な場所のように思われるのRegistrationsController#create
は、下部にあるメソッドです。
else
clean_up_passwords resource
respond_with resource
end
(私が思うに) で正しく応答していますuser
(つまり、それらを にリダイレクトしますroot_path/users
)。メソッドをいじると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
Passionate のおかげで、登録コントローラーの最終ブロックのロジックを変更する方法を見つけようとしています。これが私が試したことです(私のnoobロジックとともに):
# 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