【问题标题】:How to mask rails controller completely?如何完全屏蔽导轨控制器?
【发布时间】:2014-03-15 08:16:23
【问题描述】:

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

我的路线.rb

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

我的用户控制器.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”。

【问题讨论】:

    标签: ruby-on-rails ruby controller routes


    【解决方案1】:

    您一次可以有一个唯一的网址。

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

    【讨论】:

    • 我更喜欢这个解决方案而不是弄乱我的路由文件
    【解决方案2】:

    您可以在 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多