Аутентифицированное устройство root с именем пользователя - PullRequest
0 голосов
/ 06 августа 2020

Если пользователь вошел в систему с помощью Devise, я хотел бы перенаправить его в его индекс сообщений.

/username/posts

Согласно документации Devise Я могу использовать блок authenticated.

authenticated :user do
   ....
end

Но мне нужно имя пользователя для перенаправления туда. Примерно так.

authenticated :user do |user|
   get '/', to: user_posts(user)
end

Но это не поддерживается.

Как перенаправить с текущего пользователя на аутентифицированного root?

Изменить:

НЕ пытаюсь сделать after sign in Разработать путь. Попытка достичь постоянного root для авторизованных пользователей и одного для вышедших из системы.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Попробуйте следующее:

class ApplicationController < ActionController::Base
    def after_sign_in_path_for(user)
        user_posts_url(user)
    end
end
0 голосов
/ 10 августа 2020

Итак, вы можете сделать что-то вроде этого в своих маршрутах:

#config/routes.rb
Rails.application.routes.draw do
  devise_for :users, :controllers => {
    ...
  }

  authenticate :user do
    namespace :users do
      ...
      root :to => 'posts#index' # /users/posts # this will only be accessible to login users
    end
  end

  root :to => 'pages#index' #/pages this is accessible to all people
end

вам понадобятся:

#app/controllers/user_controller.rb
class UserController < ApplicationController
  before_action :authenticate_user!
end

и

#app/controllers/users/posts_controller.rb
class Users::PostsController < UserController
  def index
    @posts = current_user.posts
  end
  ...
end

Надеюсь, что это помогает

...