0

在我的 Ruby on Rails 应用程序中,当用户的身份验证成功时,我想根据他们所属的帐户将他/她发送到特定的主页。

我尝试在我的 Sessions 控制器中添加一个“if”子句,如下所示:

def create
  if user = User.authenticate(params[:login], params[:password])
    session[:user_id] = user.id
    if user.account.name == "X"
      redirect_to Xhome_path, :notice => "Logged in successfully"
    else
      redirect_to home_path, :notice => "Logged in successfully"
    end
  else
    flash.now[:alert] = "Invalid login/password combination"
    render :action => 'new'
  end
end

复制 routes.rb 中已经存在的以下行:

match '/home' => "users#home", :as => "home"

我添加了这个:

match '/Xhome' => "users#Xhome", :as => "Xhome"

这不起作用并给出以下结果:

  • 如果 user.account.name 'X' 的用户登录,浏览器会显示以下错误消息:

    会话控制器中的名称错误#create

    未初始化的常量 SessionsController::Xhome_path

  • 但是,一旦此用户通过身份验证,键入 mydomain.com/Xhome URL 效果很好,并带来了预期的 Xhome 视图,这似乎证明路由方面没有问题。

你知道这个 NameError 问题可能来自哪里吗?为什么我不能像使用 home_path 一样使用 Xhome_path ?

4

1 回答 1

2

执行rake routes并检查可用的路由名称及其相应的路径助手。检查路径名是否实际上是Xhome_path. 如果不存在路径名,则执行

redirect_to '/Xhome', :notice => "Logged in successfully"
于 2013-10-31T18:34:31.390 回答