Ruby on rails 未定义的方法';登录用户';Ruby on Rails教程中的RelationshipsController
这有点奇怪。我正在浏览RubyonRails教程的第十二章(供参考:),并在所有测试都通过的情况下进入第12.2.4节。然后,我执行了命令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
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中。非常感谢你!:我很高兴能为你效劳!您能否发布不起作用的控制器代码。我在您链接到的页面上没有找到任何代码片段。