Разная страница для входа в систему пользователя и не авторизована пользователем в корне

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

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

root :to => 'welcome#index'

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

class WelcomeController < ApplicationController
  before_filter :authenticate_user!

  def index
  end

end

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

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

Ответ 1

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

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

root :to => 'home#static_page'

Ответ 2

Этот ответ должен работать. Это было опубликовано на странице, связанной с Брэдли.

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

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

Ответ 3

В 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