【问题标题】:Rails Tutorial: Unable to autoload constant SessionsControllerRails 教程:无法自动加载常量 SessionsController
【发布时间】:2016-04-18 21:13:16
【问题描述】:

我正在阅读 Michael Hartl 的 Rails 教程,一切都很好,但我似乎遇到了什么问题,我不知道在哪里(部分归功于我可怕的 git 提交)

LoadError:无法自动加载常量 SessionsController,需要 /home/ubuntu/workspace/sample_app/app/controllers/sessions_controller.rb 来定义它

~/workspace/sample_app/app/controllers/sessions_controller.rb内部:

class SessionsController < ApplicationController
  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      params[:session][:remember_me] == '1' ? remember(user) : forget(user)
      flash[:success] = "Successfully logged in!"
      redirect_back_or(user)
    else
      flash.now[:danger] = "Invalid email or password"
      render 'new'
    end
  end

  def destroy
    logout if logged_in?
    redirect_to login_path
  end
end

失败的测试是:

require 'test_helper'

class SessionsControllerTest < ActionController::TestCase
  test "should get new" do
    get :new
    assert_response :success
  end    
end

我正在挖掘的所有内容都告诉我这是一个区分大小写的问题,但蛇案和骆驼案对我来说看起来是正确的。之前运行良好,但现在不行了,我真的不确定哪里出了问题。

在引用 sessions_helper.rb 文件时,其他依赖于 SessionsController 的集成测试也会失败。但我认为在获取 :new 时失败将是开始修复它的正确位置。

【问题讨论】:

  • 您最近是否更改了控制器的名称?还是移动文件?您能否也请包括sessions_helper.rb?删除它可以解决问题吗?

标签: ruby-on-rails ruby


【解决方案1】:

这原来是 Cloud9 的在线 IDE 的问题。无论出于何种原因,它都在显示包含所有内容的 sessions_controller.rb 文件,但实际上(再次,出于我不明白的原因)它是空白的。关闭所有机器上的工作区并重新打开它,文件显示为空白,复制+粘贴原始帖子中的控制器代码解决了这个问题。

【讨论】:

  • 同样的事情发生在我身上。我还必须清除我的 cookie 才能使其正常工作。
猜你喜欢
  • 2020-08-27
  • 2019-03-14
  • 2014-05-11
  • 2019-08-19
  • 2020-03-31
  • 2021-02-09
  • 1970-01-01
  • 2018-11-20
  • 2014-05-28
相关资源
最近更新 更多