【问题标题】:Routing Error: uninitialized constant Sessions路由错误:未初始化的常量会话
【发布时间】:2012-07-27 21:35:42
【问题描述】:

我正在关注this Ruby Railcasts episode 以获得一些简单的身份验证,当我导航到登录页面时我收到错误uninitialized constant Sessions。我检查了我的课程并且名称是正确的,这似乎是大多数人报告的问题。知道这里可能会发生什么吗?

我的控制器文件名为sessions_controller.rb,代码如下:

class SessionsController < ApplicationController
  def new
  end

  def create
    user = User.authenticate(params[:email], params[:password])
    if user
      session[:user_id] = user.id
      redirect_to root_url, :notice => 'Logged In!'
    else
      flash.now.alert = 'Invalid email or password'
      render 'new'
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url, :notice => 'Logged Out!'
  end
end

routes.rb 文件:

Albumtracker::Application.routes.draw do
  get "login" => "sessions/new", :as => "login"
  get "logout" => "sessions/destroy", :as => "logout"

  get "signup" => "users/new", :as => "sign_up"

  root :to => 'users#new'

  resources :users
  resources :sessions

  get "pages/index"
end

会话/新视图文件:

<h1>Log in</h1>

<%= form_tag sessions_path do %>
  <p>
  <%= label_tag :email %><br />
  <%= text_field_tag :email, params[:email] %>
  </p>
  <p>
  <%= label_tag :password %><br />
  <%= password_field_tag :password %>
  </p>
  <p class="button"><%= submit_tag "Log in" %></p>
<% end %>

【问题讨论】:

  • 检查您的会话控制器中的代码,或者更好的是,在这里发布一些代码,以便其他人也可以看到。
  • 请也显示config/routes.rb
  • 你也可以显示会话/新视图吗?

标签: ruby-on-rails ruby session routing


【解决方案1】:

您的路线中有拼写错误。在指定控制器和操作时,/ 应该是 #。您的路线应如下所示:

get "login" => "sessions#new", :as => "login"
get "logout" => "sessions#destroy", :as => "logout"

get "signup" => "users#new", :as => "sign_up"

当您在路由中使用/ 时,前面的部分与命名空间匹配。所以从"sessions/new" 路由器试图找到一个名为Sessions::NewController 的控制器。由于您的应用中不存在命名空间Sessions,因此您会收到未初始化的常量错误。

【讨论】:

  • 正确。这是一个很常见的初学者错误。
猜你喜欢
  • 2020-11-24
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2015-05-23
相关资源
最近更新 更多