2016-09-28 8 views
0

Используя go и gin-gonic, я хотел бы опубликовать простую форму, содержащую два поля тегов, а затем сохранить ее в mongodb.Ho для привязки к значениям среза в форме go (gin)?

Вот форма:

 <form action="/quotes/{{ .quote.Id.Hex }}" method="POST">  
      <input type="text" name="author" value="{{ .quote.Author }}">  
      <textarea name="body" rows="3">{{ .quote.Body }}</textarea>  

      <input name="tag" value="" >  
      <input name="tag" value="" >  

     <button type="submit">Submit</button> 
    </form> 

И обработчик:

func Create(c *gin.Context) { 
    db := c.MustGet("db").(*mgo.Database) 
    quote := models.Quote{} 
    err := c.Bind(&quote) 
    if err != nil { 
     c.Error(err) 
     return 
    } 

    //To debug 
    fmt.Println("form post values\n") 
    for t, v := range c.Request.Form["tag"] { 
     fmt.Println(t, v) 
    } 

    //To debug 
    fmt.Println(quote) 

    err = db.C(models.CollectionQuote).Insert(quote) 
    if err != nil { 
     c.Error(err) 
    } 
    c.Redirect(http.StatusMovedPermanently, "/quotes") 
} 

Теперь проблема, как для form post values я получаю:

0 mytag1 
1 mytag2 

и quote details дает что-то вроде :

{ObjectIdHex("") some-author somebody [] } 

цитата модель такова:

// Quote model 
type Quote struct { 
    Id  bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"` 
    Author  string  `json:"author" form:"author" binding:"required" bson:"author"` 
    Body  string  `json:"body" form:"body" binding:"required" bson:"body"` 
    Tag  []string  `json:"tag" bson:"tag"` 

} 

Таким образом, значения тегов получены, но не переплетены. Я знаю, как я могу исправить это и получить теги из формы? Я смотрел на джин guid, но ничего не мог найти об этом виде форм.

ответ

0

Проблема была в структуре модели. Я забыл добавить form:"tag" к модели. Таким образом, тег не связывался.

 Смежные вопросы

  • Нет связанных вопросов^_^