Как изменить домашнюю страницу моего приложения Rails, чтобы вместо нее отображалась страница регистрации?

Я хотел бы, чтобы домашняя страница приложения (т.е. целевая страница) отображала страницу регистрации. Если пользователь не вошел в систему - в этом случае он просто находит страницу «статусы».

Вот то, что я считаю двумя соответствующими выдержками:

  as :user do
    get '/register', to: 'devise/registrations#new', as: :register    
    get '/login', to: 'devise/sessions#new', as: :login
    get '/logout', to: 'devise/sessions#destroy', as: :logout
  end

[...]

resources :statuses
  get 'feed', to: 'statuses#index', as: :feed
  root to: 'statuses#index'

По сути, я пытаюсь заставить эти две страницы поменять местами маршруты и имена маршрутов. Если, как уже упоминалось, если кто-то уже вошел в систему, то целевой страницей является страница статусов.

Я немного знаю о таких вещах, таких как «получить» и аспектах URL. Если бы кто-нибудь мог дать руководство, я был бы очень обязан.

Вот файл route.rb:

Treebook::Application.routes.draw do
  resources :activities, only: [:index]

  as :user do
    get '/register', to: 'devise/registrations#new', as: :register    
    get '/login', to: 'devise/sessions#new', as: :login
    get '/logout', to: 'devise/sessions#destroy', as: :logout
  end

  devise_for :users, skip: [:sessions]

  as :user do
    get "/login" => 'devise/sessions#new', as: :new_user_session
    post "/login" => 'devise/sessions#create', as: :user_session
    delete "/logout" => 'devise/sessions#destroy', as: :destroy_user_session
  end

  resources :user_friendships do
    member do
      put :accept
      put :block
    end
  end

  resources :statuses
  get 'feed', to: 'statuses#index', as: :feed
  root to: 'statuses#index'

  scope ":profile_name" do
    resources :albums do
      resources :pictures
    end
  end

  get '/:id', to: 'profiles#show', as: 'profile'

end

person CodeWalrus    schedule 06.01.2014    source источник


Ответы (1)


Почему бы просто не отправить пользователя на страницу статусов и не перенаправить всех пользователей, которые не вошли в систему, на вход?

class StatusesController
  before_action :authorize!, only: :index

  def index
    #...
  end

  def authorize! # I believe this method is provided by devise
    unless signed_in?
      redirect_to new_user_session_path
    end
  end
end

# config/routes.rb
root 'statuses#index'
person sgrif    schedule 06.01.2014
comment
Афаик это authenticate_user! - person zrl3dx; 07.01.2014
comment
Спасибо за чаевые. Я бы все же предпочел, чтобы страница по умолчанию была страницей регистрации. Большинство сайтов, таких как Fb, Twitter и т. д., делают это. Я попробовал предоставленный код, и он по-прежнему устанавливает статусы localhost: 3000, как и ожидалось. - person CodeWalrus; 07.01.2014
comment
Это совсем не так. Если вы зайдете на twitter.com или facebook.com и войдете в систему, вы увидите свою ленту, а не страницу входа. Вы не будете перенаправлены на другую страницу. - person sgrif; 14.01.2014