在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
答案 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
希望这就是你的意思。