Rails:路由错误:未初始化的常量SessionController

Joe*_*ano 1 ruby routing routes ruby-on-rails ruby-on-rails-4

我有Rails 4.0.10.我正在关注Michael Hartl的Ruby on Rails教程,我正在尝试构建一个登录函数,但是当我按下登录按钮时出现以下错误:

Routing Error
uninitialized constant SessionController
Run Code Online (Sandbox Code Playgroud)

我完全按照说明操作,所以我很困惑为什么我会收到错误.我做错了什么?

我的会话控制器:

class SessionsController < ApplicationController
  def new
  end

  def create
    user = User.find_by(id: params[session][:id])
    if user && user.authenticate(params[:session][:password])
      log_in user
      redirect_to root_path
    else
      flash.now[:danger] = 'Invalid'
      render 'new'
    end
  end

  def destroy
  end
end
Run Code Online (Sandbox Code Playgroud)

路线:

Website::Application.routes.draw do

  get 'login' => 'sessions#new'
  post 'login' => 'session#create'
  delete 'logout' => 'sessions#destroy'
  get "users/new"
  root 'home_page#home'

end
Run Code Online (Sandbox Code Playgroud)

会话/新视图:

<div id= "admin-sign-in">
  <%= form_for(:session, url: login_path) do |f| %>

    <%= f.label :id %>
    <%= f.text_field :id %>

    <%= f.label :password %>
    <%= f.password_field :password %>

    <%= f.submit "Log in", class: "btn btn-primary" %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

会议助手:

module SessionsHelper

  def log_in(user)
    session[:user_id] = user.id
  end
end
Run Code Online (Sandbox Code Playgroud)

用户模型:

class User < ActiveRecord::Base
  has_secure_password
end
Run Code Online (Sandbox Code Playgroud)

用户控制器:

class UsersController < ApplicationController

  def new
    @user = User.new
    @users = User.all
  end

  def create
    @user = User.new(user_params)
    if @user.save
      render :action => "crop"
    else
      render 'new'
    end
  end

  private

    def user_params
      params.require(:user).permit(:password, :password_confirmation)
    end

end
Run Code Online (Sandbox Code Playgroud)

ApplicationController中:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionsHelper
end
Run Code Online (Sandbox Code Playgroud)

Зел*_*ный 10

代替:

post 'login' => 'session#create'
Run Code Online (Sandbox Code Playgroud)

使用复数:

post 'login' => 'sessions#create'
Run Code Online (Sandbox Code Playgroud)