NoMethodError:..。'admin?'同时构建Hartl RoR Sample_App

时间:2015-04-09 01:19:00

标签: ruby-on-rails-4 methods tdd

我差不多完成了。 Hartl的RoR教程中有9个,我的测试套件上有三个错误。我已经梳理过了所有东西,看起来很好,但显然不是。

这里是ERROR日志: https://gist.github.com/c7cf9884360c0b2bd05e.git

这是我的回购 https://github.com/kfrz/sample_app

HALP!

1 个答案:

答案 0 :(得分:1)

fyi-将来请在这里添加错误和相关代码,使其更容易(尽管在github上获取完整代码非常好!)。哦,对于那些来到这里的人来说,错误的要点是

https://gist.github.com/kfrz/c7cf9884360c0b2bd05e

Allrighty,所以在阅读了你的错误日志之后,我们得到了一个未定义的方法错误“admin?”

ERROR["test_should_get_new", UsersControllerTest, 1.253923]
 test_should_get_new#UsersControllerTest (1.25s)
NoMethodError:         NoMethodError: undefined method `admin?' for nil:NilClass
            app/controllers/users_controller.rb:71:in `admin_user'
            test/controllers/users_controller_test.rb:17:in `block in <class:UsersControllerTest>'
        app/controllers/users_controller.rb:71:in `admin_user'
        test/controllers/users_controller_test.rb:17:in `block in <class:UsersControllerTest>'

这里的关键线是

app/controllers/users_controller.rb:71:in `admin_user'

并看一下控制器:

class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
  before_action :correct_user, only: [:edit, :update]
  before_action :admin_user,  onlY: :destroy

#
#
#
#

   #confirm admin user
    def admin_user
      redirect_to(root_url) unless current_user.admin?
    end
end

问题实际上是在before_action

找到的

您意外地将before_action :admin_user, onlY: :destroy

中的“Y”大写

onlY:更改为only:以获得适当的访问控制w / before过滤器(以及管理员只能进行销毁操作),您应该好好去!

最佳, TJ