如何完全屏蔽rails控制器?

时间:2014-03-15 08:16:23

标签: ruby-on-rails ruby controller routes

我有一个非常简单的问题要问。如何在我的网址中屏蔽控制器?我想要这样,以便我可以显示一个干净的域,无论用户是否登录(不同的控制器)。

我的routes.rb

  root :to => "users#index"
  get 'home', to: 'home#index'

我的Users_controller.rb

class UsersController < ApplicationController    
  def index
    #@users = User.all
    if session[:user_id]
      ...
    else
      redirect_to '/home'
    end
  end
end

目前,如果用户已登录,则root_path为http://www.mydomain.com(这很好!)。

但是,如果用户未登录,则root_path为http://www.mydomain.com/home。我想删除'/ home'。

2 个答案:

答案 0 :(得分:0)

您可以同时拥有一个唯一的网址。

def index
  if session[:user_id]
    ...
  else
    #redirect_to '/home'
    render 'a_page' #this will ensure separate page with same url
  end
end

答案 1 :(得分:0)

您可以在routes.rb文件中使用约束

# User is logged in
constraints(lambda { |request| !request.session[:user_id].blank? }) do
    root :to => "users#index"
end

# User is not logged in
root :to => "home#index"