0

私にとっては機能しないルビーの基本的なコード....エラーは指定します

NoMethodError (定義されていないメソッド「to_i」

row = row.split(",").map { |x| x.to_i }

編集:

NoMethodError (undefined method `to_i' for [["123,123,123,"]]:Array):
  app/controllers/sessions_controller.rb:21:in `import'
  app/controllers/sessions_controller.rb:20:in `each'
  app/controllers/sessions_controller.rb:20:in `import'
  app/controllers/sessions_controller.rb:17:in `each'
  app/controllers/sessions_controller.rb:17:in `import'


  Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
  Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.7ms)
  Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (8.2ms)
4

1 に答える 1

2

配列でメソッド .to_i を呼び出しているため、そのエラーが発生しています。これは、そのメソッドが String クラスであるため、間違っています。ソース: http://www.ruby-doc.org/core-2.1.0 /String.html#method-i-to_i

したがって、これを修正するには、配列からその文字列を取得して、整数に変換できるようにする必要があります。配列を含む配列から始めたことを思い出してください。そのため、.pop を 2 回呼び出しています。

    row = [["123, 123, 123"]]
    string_of_numbers = row.pop.pop
    string_of_numbers.split(",").map {|x| x.to_i }

あまりにも奇妙に感じる場合は、irb で試してみてください。これは通常、私がこれらの種類のものを整理しようとする方法です。常に公式ドキュメントを参照することを忘れないでください。

于 2014-03-23T14:59:29.903 に答える