Ihre Initialisierungssignatur stimmt nicht mit Ihrer Anrufsignatur überein. Sie übergeben einen Hash, aber keinen. Es gibt eine Reihe von Möglichkeiten, um Argumentlisten zu definieren, damit dies funktioniert. Hier ist eine:
class Hotel
def initialize(hash)
@name = hash[:name]
@rating = hash[:rating]
@city = hash[:city]
@total_rooms = hash[:total_rooms]
@features = hash[:features]
end
end
This blog post beschreibt, wie Ruby-V2 Schlüsselwort Argumente verwenden. Das wäre ein anderer, vielleicht besserer Weg, um Ihre initialization
zu definieren. Hier ein Beispiel dafür:
class Hotel
def initialize(name: , rating:, city:, total_rooms:, features:)
@name = name
@rating = rating
@city = city
@total_rooms = total_rooms
@features = features
end
end
Sie können Standardwerte für Schlüsselwortargumente festlegen und als obligatorisch festlegen. In diesem Beispiel sind sie alle obligatorisch.