2015-06-01 3 views
1

В настоящее время я использую жемчужину friendlyID, и я просто хочу перенаправить приложение на корневую систему с помощью slug, если пользователь аутентифицирован.Root with slug rails 4 routing

URL

http://localhost:3000/companyABC/dashboard 

Вот мой текущий код

authenticated :employer do 
    root to: redirect("/:slug/dashboard"), as: :employer_root 
    end 

    namespace :company, path: "/:slug" do 
    resources :dashboard 
    namespace :settings do 
     resources :collaborators 
    end 
    end 

, но проблема в том, когда я подписываю в перенаправляет меня http://localhost:3000/:slug/dashboard

+0

Я боюсь, что вы должны установить 'root' явно. То, что вы можете сделать, находится в действии, связанном с проверкой root, если пользователь аутентифицирован и отображает разные мнения соответственно. –

ответ

1

Насколько я знаю, вы не могут использовать lambdas в маршрутах, поэтому невозможно получить доступ к БД и получить пул компании в маршрутах.

Но если вы используете devise, вы можете переписать метод #after_sign_in_path_for, поэтому пользователь будет перенаправлен не на root_url, а на указанный URL. Например:

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(user) 
    company_dashboards_url(user.company) 
    end 
end 

Более подробная информация здесь: devise docs about after_sign_in_path_for

+0

Приятно благодарить за подсказку. Я думал, что могу запросить пули на маршрутах. –