2016-07-20 2 views
-1

Я новичок в ruby ​​и понятия не имею, как исправить эту ошибку. когда я запускаю свой скрипт, содержащий код ниже, я всегда получаю ошибку: «не подразумевается преобразование символа в Integer. Я думаю, что проблема заключается в строках @killProc ..., @Name = ... и @working_directory. Можете ли вы сказать мне, что случилось?неявное преобразование символа в Integer, Ruby

Спасибо за вашу помощь

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

Ary вы передаете параметры как 'Array' вместо' Hash', потому что 'Array # []' хочет целое число. Также предполагается, что это опечатка, но рубин не выдаёт ** часы ** – engineersmnky

ответ

0

Довольно уверен, что вы передаете массив вместо хэш. Вы должны называть это следующим образом:

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

Вот часть, где я называю RubyCommand. \t ф = "{WAGO_IP}" порт = "{WAGO_PORT}" \t step.cmd = Litu :: RubyCommand.new ("switch_wago_do") делать | CMD, контекст | – shube

+0

@shube, который это сделает. Вы не можете называть его «Строкой». 'String # []' также ищет целочисленное значение. Этот ответ более или менее корректен, кроме того факта, что плакат не включал требуемый блок – engineersmnky