Ruby on rails 已验证的具有用户名的设计根

Ruby on rails 已验证的具有用户名的设计根,ruby-on-rails,devise,Ruby On Rails,Devise,如果用户使用Desive登录,我想将他们重定向到他们的帖子索引 /username/posts 根据 我可以使用经过验证的块 authenticated :user do .... end 但我需要用户的用户名重定向到那里。像这样的 authenticated :user do |user| get '/', to: user_posts(user) end 但这是不受支持的 如何将当前用户重定向到经过身份验证的根目录 编辑: 登录后不尝试执行设计路径。尝试为登录用户和注销用户分

如果用户使用Desive登录,我想将他们重定向到他们的帖子索引

/username/posts

根据 我可以使用经过验证的

authenticated :user do
   ....
end
但我需要用户的用户名重定向到那里。像这样的

authenticated :user do |user|
   get '/', to: user_posts(user)
end
但这是不受支持的

如何将当前用户重定向到经过身份验证的根目录

编辑:

登录后不尝试执行
设计路径。尝试为登录用户和注销用户分别创建一个永久根目录。

尝试:

class ApplicationController < ActionController::Base
    def after_sign_in_path_for(user)
        user_posts_url(user)
    end
end
class ApplicationController
所以你可以这样做 在您的路线中:

#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/user_controller.rb
类UserController

#app/controllers/users/posts_controller.rb
类用户::PostsController
我希望这会有所帮助

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