2014-09-13 2 views
0

Я сделал поиск и нашел this question на SO, но принятый ответ, похоже, не работает для меня. В основном, вики Divise говорит ...Как создать маршрут корневого пути пользователей, используя драгоценный камень Devise?

После подписания в удобном для пользователя, подтверждая запись или обновления пароля, Разрабатывает будут искать контекстный корневой путь перенаправления. Для экземпляра для ресурса пользователя: user_root_path будет использоваться, если он существует , в противном случае будет использоваться root_path по умолчанию.

С моим любительском знанием RoR, у меня есть модель под названием DEViSE игрока, и я создал следующее заявление в моем routes.rb файле ...

match 'player_root', to: 'pages#play', as: :player_root, via: :all 

... но с этим, мое приложение всегда перенаправляет на мой корневой путь вместо корневого пути игроков, который я определил выше. Что я делаю не так?

Заранее благодарим за вашу мудрость! Кроме того, я использую Ruby 2 с Rails 4.

ответ

1

Как я понимаю, вы пытаетесь указать root_path для :players.

Если для того, чтобы сделать это, вы можете использовать следующие:

authenticated :players do 
    root to: 'pages#play', as: :authenticated_root 
end 

Это даст вам пользовательские root_path для знакового в пользователей (игроков).

0

В дополнение к Andrey Dieneko, есть два других варианта у вас есть:

  1. Использование unauthenticated_path
  2. Использование authenticate_user! в контроллере

Суть здесь в том, что вы можете думать о неверно. Возможно, вы пытаетесь выяснить, где взять пользователей , если аутентифицирован. Тем не менее, вы может быть лучше подходит для фактического использования методов проверки подлинности в контроллере, чтобы проверить, является ли пользователь вошел в систему, и если не направлять их на страницу регистрации:

#config/routes.rb 
root to: "players#play" 

#app/controllers/players_controller.rb 
class PlayersController < ApplicationController 
    before_action :authenticate_user! 
end 

Это займет пользователю . "Логин" путь, если они не вошли в

в качестве альтернативы, вы можете использовать unauthenticated_path так:

#config/routes.rb 
root to: "players#play" 

unauthenticated do 
    root to: "application#landing" 
end 

-

Этот метод будет только лучше, если у вас есть приложение, как Facebook (IE он не имеет «целевую страницу» и т.д.)

Я думаю Andrey's ответ более склонны (особенно если у вас есть целевой страницы)

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