基于当前用户的Rails路线(Rails routes based on current user)

2019-10-24 05:55发布

我跟着这个轨道转换为一个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

如何我编辑这个文件,以便根将指向“消息#新”,如果用户登录和“用户#新”在没有用户登录? 我试过很多其他网页的解决方案,但他们没有工作(他们可能是色器件)。 谢谢您的帮助!

Answer 1:

你可能想在你的控制器来处理这个问题。

的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握着你的用户数据,也可能是您的应用程序不同。



Answer 2:

它在任何家庭CONTROLER写。

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"


文章来源: Rails routes based on current user