2017-02-18 6 views
0

Получение ошибкиЗакрытый метод `получает называется для (NoMethodError) Рубин

"private method `gets' called for `ot,Room 203,Healthcare Info Session,2014,6,17,14,0\n":String (NoMethodError)" 

и не уверен, где мой код является неправильным.

Также первая строка в appointments.txt:

ot,Room 203,Healthcare Info Session,2014,6,17,14,0 

Может кто-то пожалуйста, дайте мне знать, что нужно изменить в своем коде:

appointments = [ ] 
file_object = File.open("appointments.txt", "r") 

while line = file_object.gets 
    fields = line.gets.chomp.split(',') 
    appointment_type = [0] 

    if appointment_type == 'ot' 
    location = fields[1] 
    purpose = fields[2] 
    year = fields[3].to_i 
    month = fields[4].to_i 
    day = fields[5].to_i 
    hour = fields[6].to_i 
    minute = fields[7].to_i 
    appt1 = OneTimeAppointment.new("Dentist", "Cleaning", 4, 45, 5, 20, 2017) 
    appointments.push(appt1) 
    else 
    location = fields[1] 
    purpose = fields[2] 
    hour = fields[3].to_i 
    minute = fields[4].to_i 
    day = fields[5].to_i 
    appt2 = MonthlyAppointment.new("Doctor", "Cold", 2, 30, 15) 
    appointments.push(appt2) 
    end 
end 

ответ

1

Вы не можете назвать gets на шнурке. Вы вызываете gets в файл для извлечения строки, но затем по какой-то причине вы идете и вызываете gets. Это неверно.

Исправление выглядит следующим образом:

File.readlines('appointments.txt') do |line| 
    fields = line.chomp.split(',') 

    # ... 
end 

Если вы читаете данные CSV вы можете рассмотреть вопрос об использовании CSV library, который поставляется с Ruby.

+0

'new ': неверная дата (ArgumentError) появляется, когда я добавляю этот код в свой файл – Julian

+0

Как исправить эту ошибку? – Julian

+0

Получение ошибки "rb: 37: in' new ': недействительная дата (ArgumentError) " – Julian

Смежные вопросы