私は構造体の内部に2つの構造体からなる構造体のリストを範囲指定しようとしています。構造体でデータを正しく埋めても問題はありません。問題はHTMLにレンダリングしようとするときです。私は何も表示することはできません。構造体の構造体のオーバーレンジに行く
これは私の最初のgo webプロジェクトで、私は中小企業向けの車を販売するウェブサイトに取り組んでいます。私のデータベースは1.写真のCarsの1.Mとして設計されています。だからメインの車のページに。私はちょうど車の詳細と1つの写真をロードしたいです。私は地図を使ってこれを試してみましたが、普通のIDの正しい車の詳細と一緒に1枚の写真を印刷したいときに問題に遭遇しました。だから私は各IDのために1つの写真を引き出す3番目の構造体を使用していると考えました。
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)
}
私が構造体を渡す直前のprint文は、意図したとおりの情報を私に与えます。
[{{20 2009年ホンダアコード5000} {20公式/写真/ questionMark.jpg} {{21 2009年アキュラTLX 14000} {21公式/写真/ kia.png}} {{22 2015 Kia Sportage 34000 } {22パブリック/写真/ kia.png}}]
今、私はそれをレンダリングしようとすると、HTMLで
{{range .}}
<h3>{{.Cars.Make}} - {{.Cars.Model}} - {{.Cars.Year}}</h3>
<img src="{{.Pic.Path}}" id="{{.Pic.Id}}">
{{end}}
私のコードの重要で気軽に、または別の方法を提案します。前もって感謝します!
*常に 'ExecuteTemplate'によって返された' error'をチェックしてください。 '' cars ''は変数名ではなくテンプレート名であると考えられます。 'ExecuteTemplate'の代わりに' tpl.Execute(w、&carsDetail) 'を使うことができます。 – putu