Ruby on rails 未定义的方法';登录用户';Ruby on Rails教程中的RelationshipsController

Ruby on rails 未定义的方法';登录用户';Ruby on Rails教程中的RelationshipsController,ruby-on-rails,ruby,nomethoderror,Ruby On Rails,Ruby,Nomethoderror,这有点奇怪。我正在浏览RubyonRails教程的第十二章(供参考:),并在所有测试都通过的情况下进入第12.2.4节。然后,我执行了命令rails generate controller Relationships,并在清单12.30和12.31中准确地输入了代码,以尝试让Relationships controller测试通过,但出现了以下错误: ERROR["test_destroy_should_require_logged-in_user", RelationshipsControll

这有点奇怪。我正在浏览RubyonRails教程的第十二章(供参考:),并在所有测试都通过的情况下进入第12.2.4节。然后,我执行了命令
rails generate controller Relationships
,并在清单12.30和12.31中准确地输入了代码,以尝试让Relationships controller测试通过,但出现了以下错误:

ERROR["test_destroy_should_require_logged-in_user", RelationshipsControllerTest, 2015-11-13 11:07:25 +0000]
 test_destroy_should_require_logged-in_user#RelationshipsControllerTest (1447412845.16s)
NoMethodError:         NoMethodError: undefined method `logged_in_user' for #<RelationshipsController:0x000000044f5bd8>
            test/controllers/relationships_controller_test.rb:14:in `block (2 levels) in <class:RelationshipsControllerTest>'
            test/controllers/relationships_controller_test.rb:13:in `block in <class:RelationshipsControllerTest>'
        test/controllers/relationships_controller_test.rb:14:in `block (2 levels) in <class:RelationshipsControllerTest>'
        test/controllers/relationships_controller_test.rb:13:in `block in <class:RelationshipsControllerTest>'

ERROR["test_create_should_require_logged-in_user", RelationshipsControllerTest, 2015-11-13 11:07:25 +0000]
 test_create_should_require_logged-in_user#RelationshipsControllerTest (1447412845.22s)
NoMethodError:         NoMethodError: undefined method `logged_in_user' for #<RelationshipsController:0x00000004db9990>
            test/controllers/relationships_controller_test.rb:7:in `block (2 levels) in <class:RelationshipsControllerTest>'
            test/controllers/relationships_controller_test.rb:6:in `block in <class:RelationshipsControllerTest>'
        test/controllers/relationships_controller_test.rb:7:in `block (2 levels) in <class:RelationshipsControllerTest>'
        test/controllers/relationships_controller_test.rb:6:in `block in <class:RelationshipsControllerTest>'
错误[“测试销毁应该要求登录用户”,RelationshipsControllerTest,2015-11-13 11:07:25+0000]
测试\销毁\应\要求\登录\用户\关系控制器测试(1447412845.16s)
NoMethodError:NoMethodError:未定义的方法“登录用户”#
测试/控制器/关系\u控制器\u测试.rb:14:in'block(2级)in'
test/controllers/relationships\u controller\u test.rb:13:in'block in'
测试/控制器/关系\u控制器\u测试.rb:14:in'block(2级)in'
test/controllers/relationships\u controller\u test.rb:13:in'block in'
错误[“测试\创建\应该\需要\登录\用户”,RelationshipsControllerTest,2015-11-13 11:07:25+0000]
测试\创建\应该\需要\登录\用户\关系控制器测试(1447412845.22s)
NoMethodError:NoMethodError:未定义的方法“登录用户”#
测试/控制器/关系\u控制器\u测试.rb:7:in'block(2级)in'
测试/控制器/关系\u控制器\u测试.rb:6:in'block in'
测试/控制器/关系\u控制器\u测试.rb:7:in'block(2级)in'
测试/控制器/关系\u控制器\u测试.rb:6:in'block in'
为什么它没有从用户控制器中看到logged_in_user方法?我可以把它当作

class RelationshipsController < ApplicationController
  before_action :logged_in_user

  def create
    user = User.find(params[:followed_id])
    current_user.follow(user)
    redirect_to user
  end

  def destroy
    user = Relationship.find(params[:id]).followed
    current_user.unfollow(user)
    redirect_to user
  end

  private

    # Confirms a logged-in user.
    def logged_in_user
      unless logged_in?
        store_location
        flash[:danger] = "Please log in."
        redirect_to login_url
      end
    end
end
类关系控制器

测试通过了,但这违反了教程中反复强调的“不要重复自己”原则。知道哪里出了问题吗?

是在
用户控制器
应用程序控制器
中登录用户
的方法吗?如果它位于
userscoontroller
中,则由于分层继承,它将无法访问它。尝试将该方法放入
应用程序控制器
,然后对其进行旋转


这样做将使
用户控制器
关系控制器
都可以访问此方法,因为它们都继承自
应用程序控制器

我到家后会再次检查,但这是我第二次学习本教程,上次学习时没有出现任何问题。我一直在改变事情,试图和罗相处得更好。维奥拉!它在工作版本的ApplicationController中。非常感谢你!:我很高兴能为你效劳!您能否发布不起作用的控制器代码。我在您链接到的页面上没有找到任何代码片段。