Из следующего обучающей, у меня есть этот метод экземпляра для класса Guide, который имеет внутренний класс, класс Config:частного метод «Сохранить» призвала # <Ресторан: 0x00000001619d00> (NoMethodError)
def add
puts "\nAdd a restaurant\n\n".upcase
restaurant = Restaurant.new
print "Restaurant name: "
restaurant.name = gets.chomp.strip
print "Cuisine type: "
restaurant.cuisine = gets.chomp.strip
print "Average price: "
restaurant.price = gets.chomp.strip
# An instance method on the Restaurant class that we'll save
if restaurant.save
puts "\nRestaurant Added\n\n"
else
puts "\nSave Error: Restaurant not added\n\n"
end
end
Здесь это код класса Ресторан: `
class Restaurant
@@filepath = nil
def self.filepath=(path=nil)
@@filepath = File.join(APP_ROOT, path)
end
attr_accessor :name, :cuisine, :price
def self.file_exists?
# class should know if a restaurant file file_exists
if @@filepath && File.exists?(@@filepath)
return true
else
return false
end
end
def self.file_usable?
return false unless @@filepath
return false unless File.exists?(@@filepath)
return false unless File.readable?(@@filepath)
return false unless File.writable?(@@filepath)
return true
end
def self.create_file
# create restaurant file
File.open(@@filepath, 'w') unless file_exists?
return file_usable?
end
end
def self.saved_restaurants
# read the restaurant file
# return instances of restaurant
end
def save
return false unless Restaurant.file_usable?
File.open(@@filepath, 'a') do |file|
file.puts "#{[@name, @cuisine, @price].join("\t")}\n"
end
return true
end
`
И я получаю эту ошибку говоря, что я звоню частный метод, когда я не:
➜ ruby_executables cd restaurant_app
➜ restaurant_app git:(master) ✗ ruby ./init.rb
Found restaurant file
<<<< Welcome to the Food Finder >>>>
This is an interactive guide to help you find the food you crave.
(Enter response or type quit to exit)> list
Listing...
(Enter response or type quit to exit)> find
Finding...
(Enter response or type quit to exit)> add
ADD A RESTAURANT
Restaurant name: sams
Cuisine type: american
Average price: 12
/home/jacqueline/ruby_executables/restaurant_app/lib/guide.rb:97:in `add': private method `save' called for #<Restaurant:0x00000001619d00> (NoMethodError)
from /home/jacqueline/ruby_executables/restaurant_app/lib/guide.rb:79:in `do_action'
from /home/jacqueline/ruby_executables/restaurant_app/lib/guide.rb:54:in `launch!'
from ./init.rb:29:in `<main>'
➜ restaurant_app git:(master) ✗
Я не понимаю, почему я получаю эту ошибку или что делать, чтобы ее исправить.
Вы называете 'restaurant.save' в нашем коде, и' save' кажется приватным (по какой-либо причине). Никто не сможет вам помочь, если вы не покажете нам весь свой код в классе 'Restaurant'. – spickermann
Пожалуйста, покажите класс ресторана. – rderoldan1
Был добавлен код класса ресторана в качестве редактирования вышеуказанного вопроса, @spickermann –