@valerafedorchenko

Как правильно получить данные с бд и отобразить в шаблоне?

Здравствуйте, не могу вывести данные в шаблон, не понимаю в чем моя проблема.
Передаю данные в шаблон:
t, err := template.ParseFiles("views/admin/news/news.html")
		if err != nil {
			log.Println(err)
		}
		rslts := models.GetNews()
		t.ExecuteTemplate(w, "news", rslts)


Код функции models.GetNews()
type Results struct {
	Id          int
	Title       string
	Url         string
	Description string
	Time        string
	Src         string
}

func GetNews() []*Results {
	db, err := sql.Open("mysql", "user:password@/dbname")
	if err != nil {
		log.Println(err)
	}
	defer db.Close()
	rows, err := db.Query("SELECT * FROM news")
	if err != nil {
		log.Println(err)
	}
	rslts := make([]*Results, 0)
	for rows.Next() {
		rslt := new(Results)
		rows.Scan(&rslt.Id, &rslt.Title, &rslt.Url, &rslt.Description, &rslt.Time, &rslt.Src)
		rslts = append(rslts, rslt)
	}

	return rslts
}


Потом пытаюсь вывести в шаблон:
{{ range . }}
                                  <tr>
                                      <td  style="text-align: center;">{{ .rslts.Id }}</td>
                                      <td  style="text-align: center;">{{ .rslts.Description }}</td>
                                      <td  style="text-align: center;">{{ .rslts.Time }}</td>
                                      <td class="text-right" style="text-align: center;"><a href="#"><i class="pe-7s-junk"></i></a></td>
                                  </tr>
                                  {{ end }}

Проблема с выводом в шаблон, с функцией GetNews() все в порядке - данные получает.
Гуглил, пробовал кучу разных вариантов, нечего не выходит.
Заранее благодарен.
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
нужно не .rslts.Id, а просто .Id, вы же передаете уже внутренности rslts, не нужно ее имя писать еще раз. Тем более, у вас там цикл и внутри него вы обращаетесь к одному элементу массива rslts.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы