Ruby on rails 3 RubyonRails教程(mhartl)";第10章:销毁用户“;自动测试rspec删除';摧毁';失败

Ruby on rails 3 RubyonRails教程(mhartl)";第10章:销毁用户“;自动测试rspec删除';摧毁';失败,ruby-on-rails-3,rspec-rails,railstutorial.org,Ruby On Rails 3,Rspec Rails,Railstutorial.org,我正在做迈克尔·哈特尔的Rails教程第10章的screencast+在线图书,我被困在最后一个子章 控制台输出: Failures: 1) UsersController DELETE 'destroy' as an admin user should destroy the user Failure/Error: delete :destroy, :id => @user NameError: undefined

我正在做迈克尔·哈特尔的Rails教程第10章的screencast+在线图书,我被困在最后一个子章

控制台输出:

Failures:

      1) UsersController DELETE 'destroy' as an admin user should destroy the user

         Failure/Error: delete :destroy, :id => @user
         NameError:
           undefined local variable or method `users' for #<UsersController:0x00000104a2f698>
          ./app/controllers/users_controller.rb:47:in `destroy'
          ./spec/controllers/users_controller_spec.rb:321:in `block (5 levels) in <top (required)>'
          ./spec/controllers/users_controller_spec.rb:320:in `block (4 levels) in <top (required)>'

      2) UsersController DELETE 'destroy' as an admin user should redirect to the users page

         Failure/Error: delete :destroy, :id => @user
         NameError:
           undefined local variable or method `users' for #<UsersController:0x000001049bf370>
         ./app/controllers/users_controller.rb:47:in `destroy'
         ./spec/controllers/users_controller_spec.rb:326:in `block (4 levels) in <top (required)>'
    describe "DELETE 'destroy'" do

      before(:each) do
        @user = Factory(:user)
      end

      describe "as a non-signed-in user" do
        it "should deny access" do
          delete :destroy, :id => @user
          response.should redirect_to(signin_path)
        end
      end

      describe "as non-admin user" do
        it "should protect the action" do
          test_sign_in(@user)
          delete :destroy, :id => @user
          response.should redirect_to(root_path)
        end
      end

      describe "as an admin user" do

        before(:each) do
          @admin = Factory(:user, :email => "admin@example.com", :admin => true)
          test_sign_in(@admin)
        end

        it "should destroy the user" do
          lambda do
            delete :destroy, :id => @user
          end.should change(User, :count).by(-1)
        end

        it "should redirect to the users page" do
          delete :destroy, :id => @user
          flash[:success].should =~ /destroyed/i
          response.should redirect_to(users_path)
        end

        it "should not be able to destroy itself" do
          delete :destroy, :id => @admin
          lambda do
            delete :destroy, :id => @admin
          end.should_not change(User, :count)
        end
      end
  end   
end
我是一个初学者,但在发布任何问题之前,我总是有做大量研究的习惯(90%的时间我通过搜索SO和Google找到答案)

我的最后两个未列出的问题(在发布前找到了答案)通过更新我的GemFile(rspec中的will_paginate和undefined_selector)得到了修复。也会是这样吗

感谢您的关注,并花时间阅读本文

找到了修复上述问题的打字错误(duh!):

def destroy
    User.find(params[:id]).destroy
    redirect_to users_path, :flash => { :success => "User destroyed." }
  end
我没有选择“users\u path”,而是选择了“users.path”

在尝试从浏览器中删除时注意到它

找到了修复上述问题的打字错误(duh!):

def destroy
    User.find(params[:id]).destroy
    redirect_to users_path, :flash => { :success => "User destroyed." }
  end
我没有选择“users\u path”,而是选择了“users.path”


在尝试从浏览器中删除时注意到它

+1不仅用于发现问题,还用于花时间跟进答案。+1不仅用于发现问题,还用于花时间跟进答案。