Ruby on rails 已验证的具有用户名的设计根
如果用户使用Desive登录,我想将他们重定向到他们的帖子索引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 但这是不受支持的 如何将当前用户重定向到经过身份验证的根目录 编辑: 登录后不尝试执行设计路径。尝试为登录用户和注销用户分
/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