Маршруты с проверкой подлинности и без проверки подлинности для Devise

Я создал приложение с использованием Rails 5. Моя пользовательская аутентификация управляется гемом Devise.

Мне нужны разные корневые пути для аутентифицированных и неаутентифицированных пользователей. Я следовал советам, данным здесь. Все кажется действительно простым, но после входа в систему я все еще перенаправляюсь на обычный root_path, например, когда нажимаю ссылку «Главная».

Вот мой код route.rb:

authenticated :user do
  root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
end
root to: 'landing#index', as: :root

Вот код ссылки «Главная» на моей панели навигации:

- if api_v1_public_members_user_signed_in?
  = link_to 'Home', authenticated_root_path
- else 
  = link_to 'Home', root_path

Может ли кто-нибудь заметить что-то, чего мне не хватает?

** К вашему сведению, api_v1_public_members_user_signed_in? может показаться незнакомым, но он необходим, так как я использую пространство имен для своих контроллеров разработки. Дополнительную информацию см. здесь.


person HermannHH    schedule 04.08.2016    source источник


Ответы (1)


Попробуйте заключить как аутентифицированные, так и неаутентифицированные корневые пути в devise_scope и дать им разные имена:

devise_scope :user do
  authenticated :user do
    root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
  end

  unauthenticated :user do
    root to: 'landing#index', as: :unauthenticated_root
  end
end

Затем измените свой вид на:

- if api_v1_public_members_user_signed_in?
  = link_to 'Home', authenticated_root_path
- else 
  = link_to 'Home', unauthenticated_root_path
person Paul Fioravanti    schedule 05.08.2016
comment
Также, похоже, не работает должным образом. Меня все еще перенаправляют на unauthenticated_root_path @PaulFioravanti - person HermannHH; 05.08.2016