Ich versuche, über eine Liste einer Struktur, bestehend aus 2 Strukturen innerhalb davon. Ich habe kein Problem, die Daten in der Struktur korrekt zu füllen, das Problem ist, wenn ich versuche, es in den HTML-Code zu rendern. Ich kann nichts zur Schau stellen.Go-Vorlage Bereich über Struktur von Strukturen
Dies ist mein erstes Go-Web-Projekt und ich arbeite an einer Website, um Autos für ein kleines Unternehmen zu verkaufen. Meine Datenbank ist als 1..M von Autos zu Bildern gestaltet. Also auf der Hauptautoseite. Ich möchte nur 1 Bild mit den Details des Autos laden. Ich habe versucht, eine Karte dafür zu verwenden, aber ich stieß auf ein Problem, als ich nur 1 Bild ausdrucken wollte, um mit den richtigen Auto-Details auf der gemeinsamen ID zu gehen. Also dachte ich mir, eine dritte Struktur zu verwenden, die ich für jede ID aus einem Bild herausziehen würde.
type Car struct {
Id int
Year, Make, Model, Price string
}
type Pics struct {
Id int
Path string
}
type CarDetail struct {
Cars Car
Pic Pics
}
func cars(w http.ResponseWriter, r *http.Request){
//loads all the cars in the database
cars := loadCars()
carDetails := make([]CarDetail,0)
carIds := make([]int,len(cars))
for i := 0; i < len(cars); i++{
//gets all the car IDs in the db
carIds[i] = getCarID(cars[i])
photoPath := loadSinglePhoto(carIds[i]) //now have the single photo
n := CarDetail{Cars:cars[i],Pic:photoPath}
carDetails = append(carDetails, n)
}
fmt.Println(carDetails) //getting car details the way I want
tpl.ExecuteTemplate(w, "cars", &carDetails)
}
Die Druckanweisung direkt bevor ich in der Struktur übergebe, gibt mir die Information, die ich beabsichtigte.
[{{20 2009 Honda Accord 5000} {20 öffentlich/pics/questionMark.jpg}} {{21 2009 Acura TLX 14000} {21 öffentlich/pics/kia.png}} {{22 2015 Kia Sportage 34000 } {22 öffentlich/Fotos/kia.png}}]
Jetzt, wenn ich versuche, es in den hTML-Code zu machen
{{range .}}
<h3>{{.Cars.Make}} - {{.Cars.Model}} - {{.Cars.Year}}</h3>
<img src="{{.Pic.Path}}" id="{{.Pic.Id}}">
{{end}}
meines Codes kritisch, frei zu sein Fühlen oder einen anderen Weg vorschlagen. Vielen Dank im Voraus!
* Überprüfen Sie immer 'error', das von' ExecuteTemplate' zurückgegeben wird. Die "Autos" sollen Schablonename und nicht Variablenname sein. Anstelle von 'ExecuteTemplate' können Sie' tpl.Execute (w, & carsDetail) 'verwenden. – putu