根据用户是否登录路由到不同的页面。 - Rails4

时间:2014-05-15 13:20:24

标签: ruby-on-rails-4 devise

在config / routes.rb中,我有:

root to: "pages#home"
get "/visitor" => "pages#visitor"

在我的controllers / application_controller.rb中,我有:

before_filter :route_relative_to_login_state_and_role

private

def route_relative_to_login_state_and_role
    if current_user
      redirect_to root_path
    else
      redirect_to visitor_path
    end
end

在我的controllers / pages_controller.rb中,我有:

class PagesController < ApplicationController

  before_action :authenticate_user!, :only => [:home]

  def home
    @page_title = t ('home_page_title')
  end

  def visitor
    @page_title = t ('visitor_page_title')
  end

end

这是我的观点/ pages / home.html.erb

<h1><%= @page_title %></h1> 

这是我的观点/ pages / visitor.html.erb

<h1><%= @page_title %></h1> 

这是来自rake路线的输出:

    visitor GET    /visitor(.:format)                       pages#visitor

当我启动服务器并将浏览器指向htp:// localhost:3000时,浏览器会告诉我该页面没有正确重定向。这是日志文件所说的内容:

Started GET "/visitor" for 127.0.0.1 at 2014-05-15 10:37:46 -0700
Processing by PagesController#visitor as HTML
Redirected to http://localhost:3000/visitor
Filter chain halted as :route_relative_to_login_state_and_role rendered or redirected       

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,如果用户登录了你要重定向到页面的内容,如果没有重定向到另一个页面,你所做的是错误的,你可以从ApplicationController控制它并做类似的事情:

before_filter :check_user

def check_user
   if current_user
       ## this is logged user
       redirect_to first_path
   else
       ## this is unlogged user
       redirect_to second_path
   end
end
希望这就是你的意思。

相关问题