Rails 基于当前用户的路由
Rails routes based on current user
我按照 this rails 转换为 rails 项目创建身份验证。我的路线目前是这样的:
Rails.application.routes.draw do
resources :messages
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
get "new_photo" => "users#edit", :as => "new_photo"
root :to => "users#new"
resources :users
resources :sessions
end
如何编辑此文件,以便在用户登录时根指向 "messages#new",在没有用户登录时指向 "users#new"?我尝试了其他页面上的许多解决方案,但它们没有用(它们可能是为了设计)。感谢您的帮助!
您可能希望在您的控制器中处理此问题。
routes.rb
root :to => "users#new"
users_controller.rb
def new
return redirect_to new_messages_url if current_user
# normal controller code below...
end
这会将 logged_in 用户 (current_user
) 重定向到新消息页面(如果已经登录)。我只是假设 current_user
持有您的用户数据,它可能因您的应用而异。
在任何家庭控制器中写入它。
def set_roots
if current_user
redirect_to dashboard_home_index_path
else
redirect_to home_index_path
end
end
在 routes.rb 文件中
root :to => 'home#set_roots'
match "/find_roots" => "home#set_roots"
我按照 this rails 转换为 rails 项目创建身份验证。我的路线目前是这样的:
Rails.application.routes.draw do
resources :messages
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
get "new_photo" => "users#edit", :as => "new_photo"
root :to => "users#new"
resources :users
resources :sessions
end
如何编辑此文件,以便在用户登录时根指向 "messages#new",在没有用户登录时指向 "users#new"?我尝试了其他页面上的许多解决方案,但它们没有用(它们可能是为了设计)。感谢您的帮助!
您可能希望在您的控制器中处理此问题。
routes.rb
root :to => "users#new"
users_controller.rb
def new
return redirect_to new_messages_url if current_user
# normal controller code below...
end
这会将 logged_in 用户 (current_user
) 重定向到新消息页面(如果已经登录)。我只是假设 current_user
持有您的用户数据,它可能因您的应用而异。
在任何家庭控制器中写入它。
def set_roots
if current_user
redirect_to dashboard_home_index_path
else
redirect_to home_index_path
end
end
在 routes.rb 文件中
root :to => 'home#set_roots'
match "/find_roots" => "home#set_roots"