2012-02-18 2 views
11

Я хочу показать другую корневую страницу для пользователей в Rails.Разная страница для входа в систему пользователя и не вошел в систему под пользователем

Я определил корень:

root :to => 'welcome#index' 

И приветственное контроль:

class WelcomeController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    end 

end 

В настоящее время это нормально для зарегистрированных пользователей, но не зарегистрированных пользователей перенаправлены в/пользователей/sign_in

Я хочу показать статическую корневую страницу, а не перенаправить.

+1

Удалите before_filter и добавить логику в индексном метод, чтобы определить, что дисплей на основе, являются ли они вошли в Используете ли вы разработать ? –

+0

@MarcTalbot да, возможно ли реализовать в routes.rb? –

+1

Этот точный вопрос был дан здесь http://stackoverflow.com/questions/8888289/rails-3-w-devise-how-to-set-two-separate-homepages-based-on-whether-the-user- i/8888513 # 8888513 –

ответ

2

Этот ответ должен работать. Это было опубликовано на странице Bradley linked.

Поместите это в свой контроллер приветствия.

def index 
    if authenticate_user? 
    redirect_to :controller=>'dashboard', :action => 'index' 
    else 
    redirect_to '/public/example_html_file.html' 
    end 
end 
2

В вашем routes.rb:

authenticated do 
    root :to => 'welcome#index' 
end 

root :to => 'home#static_page' 

Это гарантирует, что root_url для всех прошедших проверку подлинности пользователей welcome#index

Для справки: https://github.com/plataformatec/devise/pull/1147

+0

Это больше не работает в Rails 4, попробуйте: authenticated: user do root to: 'dashboard # index', as:: authenticated_root end root to: 'landing_page # index', as:: public_root – ardochhigh

23

Ответ, предложенный Puneet Goyal будет не работают в Rails 4. См. this. Решение состоит в том, чтобы использовать псевдоним для одного из двух маршрутов, как это:.

authenticated do 
    root :to => 'welcome#index', as: :authenticated 
end 

root :to => 'home#static_page' 
+1

Jose Valim обсуждает это решение в проблеме разработки [здесь] (https://github.com/plataformatec/devise/issues/2393#issuecomment-17298414) –

Смежные вопросы