Problem:
Gdy użytkownik jest zalogowany chciałbym, żeby root_path prowadził na ‘dashboard#index’.
W innym wypadku root_path powinien prowadzić na ‘welcome#index’.
Da się to łatwo rozwiązać wskazując na jeden z tych kontrolerów (albo na jeszcze trzeci) i odpowiedni redirect w zależności od sytuacji.
Czy istnieje jakakolwiek możliwość dynamicznego wyboru kontrolera i akcji, np poprzez podanie jakiejś lambdy w routingu?
jeżeli używasz devise:
#routes.rb
[code]
authenticated :user do
root to: “dashboard#index”, as: :authenticated_root
end
unauthenticated do
root to: “welcome#index”, as: :unauthenticated_root
end[/code]
#aplication_controller.rb
[code]
def after_sign_in_path_for(user)
authenticated_root_url
end
def after_sign_out_path_for(user)
unauthenticated_root_url
end[/code]
Dzięki za dobry trop. Odpowiedzią na moje pytanie jest http://viget.com/extend/using-routing-constraints-to-root-your-app (to wykorzystuje Devise).
Temat do zamknięcia.