ruby-on-rails - 路由错误 : uninitialized constant Sessions

标签 ruby-on-rails ruby session routes

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

我的 Controller 文件的名字是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

session /新 View 文件:

<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 %>

最佳答案

您的路线有拼写错误。 /在指定controller和action时应该是#。您的路线应如下所示:

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

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

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

关于ruby-on-rails - 路由错误 : uninitialized constant Sessions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680401/

相关文章:

ruby-on-rails - Google Cloud Storage - Rails 网络应用程序 - 不同环境的不同存储桶和不同访问 key

ruby-on-rails - HABTM rails 关系中的 Pundit 范围

asp.net - 共享2个应用程序: Session State Deserialization Error for ASP.Net MVC

PHP session 和 iframe

ruby-on-rails - Rails Gem 'omniauth-google-oauth2' 安全/request.env 如何工作?

ruby-on-rails - 使用 rspec-spies `have_received` 匹配器

ruby-on-rails - rails : CSS: requiring css/scss associated with controller page view through application. css.scss

ruby-on-rails - Ruby on Rails。自定义验证器方法中的自定义消息

ruby - 将点分布在边界内的表面上

javascript - CodeIgniter 没有破坏我的 session