0

following error i am getting

   And I am exists as a parent      # features/step_definitions/kid_steps.rb:106
   undefined local variable or method `role' for #<Cucumber::Rails::World:0xc4722f8> (NameError)
  ./features/step_definitions/event_steps.rb:10:in `create_visitor'
  ./features/step_definitions/event_steps.rb:14:in `create_user'
  ./features/step_definitions/kid_steps.rb:107:in `/^I am exists as a parent$/'
  features/manage_kids.feature:11:in `And I am exists as a parent'

用户工厂

          FactoryGirl.define do

           factory :user do
             email "user@example.com"
             password "test123"
             password_confirmation "test123"
          end
          factory :role do
             id "1"
             name "admin"

             id "2" 
             name "parent"

             id "3" 
             name "gifter"
          end
       end </code>

user.rb

    def role?(role)
       return !!self.roles.find_by_name(role.to_s)
    end

ability.rb

   class Ability
     include CanCan::Ability

     def initialize(user)

      user ||= User.new #user

        entities = [Kid, Customer, Event, Contact]

         # check if user is 'admin' grant all permissions
       if user.role? :admin
        can :manage, :all
      else
       can :manage, entities
      end

    end
  end

#event_steps.rb

       def create_visitor

             @visitor ||= { :email => "user@example.com",
             :password => "test123", 
             :password_confirmation => "test123", 
             :role => Role.find_by_name(role.to_s)}
      end

我已经尝试了很多方法来自己解决问题,我也用谷歌搜索过,但我无法解决它,而且我对 ruby​​ on rails 和 cucumber 也是新手。如果我错了,请指导我,你的帮助将不胜感激。谢谢

4

1 回答 1

0

如果您仔细查看堆栈跟踪:

   And I am exists as a parent      # features/step_definitions/kid_steps.rb:106
   undefined local variable or method `role' for #<Cucumber::Rails::World:0xc4722f8> (NameError)
  ./features/step_definitions/event_steps.rb:10:in `create_visitor'
  ./features/step_definitions/event_steps.rb:14:in `create_user'
  ./features/step_definitions/kid_steps.rb:107:in `/^I am exists as a parent$/'
  features/manage_kids.feature:11:in `And I am exists as a parent'

即使使用执行的方法,您也会找到错误消息undefined local variable or method 'role'和引发错误的源代码的位置。./features/step_definitions/event_steps.rb:10create_visitor

查看您发布的来源时:

def create_visitor
  @visitor ||= { :email => "user@example.com",
    :password => "test123", 
    :password_confirmation => "test123", 
    :role => Role.find_by_name(role.to_s)} # i assume that this is line 10!
end

你可以看到你在打电话role。从您发布的代码中,没有role定义的地方。必须有一个具有该名称的变量或方法。也许这只是一个错字,你的意思是一个实例变量@role

我们无法为您提供更多帮助,一切尽在您的代码中...

于 2013-10-11T13:37:10.897 回答