2016-07-20 12 views
-1

Ich bin neu in Ruby, und habe keine Ahnung, wie Sie diesen Fehler beheben. Wenn ich mein Skript mit dem folgenden Code ausführe, erhalte ich immer den Fehler: 'keine implizite Umwandlung von Symbol in Ganzzahl. Ich denke, das Problem liegt in den Zeilen @killProc ..., @Name = ... und @working_directory. Können Sie mir sagen, was falsch ist?keine implizite Umwandlung von Symbol in Integer, Ruby

Danke für Ihre Hilfe

class RubyCommand 
     include Patir::Command 
     attr_reader :cmd,:working_directory,:killProc 
     def initialize params,&block 
     @killProc=params[:killProc] 
     @name=params[:name] 
     @working_directory=params[working_directory]||"." 
     if block_given? 
      @cmd=block 
     else 
      raise "You Need to provide a block" 
     end 
     end 
    end 
+0

Sie übergeben Params als 'Array' anstelle von' Hash' weil 'Array # []' eine ganze Zahl will. Auch angenommen, es ist ein Tippfehler, aber Ruby gibt nicht ** Uhren ** – engineersmnky

Antwort

0

Ziemlich sicher, dass Sie ein Array anstelle eines Hash vorbei sind. Sie sollten es so nennen:

RubyCommand.new({killProc:1,name:"test"}) 
+0

Hier ist der Teil, wo ich RubyCommand aufrufen. \t ip = "{} WAGO_IP" port = "{} WAGO_PORT" \t step.cmd = Litu :: RubyCommand.new ("switch_wago_do") tut | cmd, Kontext | – shube

+0

@shube das wird es tun. Sie können es nicht mit einem 'String' aufrufen. 'String # []' sucht auch nach einem ganzzahligen Wert. Diese Antwort ist mehr oder weniger korrekt als die Tatsache, dass das Poster den erforderlichen Block nicht enthielt – engineersmnky