1

我的应用程序中有一个User模型和一个App模型。与模型Appbelongs_to关系。User

在模板apps/new.plush.html中,我需要将用户列表呈现为下拉选择。我forms.Selectable在模型中实现了如下界面User-

func (a *User) SelectLabel() string {
    return a.Name
}

func (a *User) SelectValue() interface{} {
    return a.ID
}

中的New()动作apps.go看起来像这样 -

func (v AppsResource) New(c buffalo.Context) error {
    tx, ok := c.Value("tx").(*pop.Connection)
    if !ok {
        return fmt.Errorf("no transaction found")
    }

    users := &models.Users{}
    if atErr := tx.All(users); atErr != nil {
        return c.Error(http.StatusNotFound, atErr)
    }

    c.Set("users", users)
    c.Set("app", &models.App{})

    return c.Render(http.StatusOK, r.HTML("/apps/new.plush.html"))
}

现在,如何编写 Select Tag 以呈现users数组中的选项?

以下不起作用 -

<%= f.SelectTag("UserID", {options: users})%>
4

1 回答 1

2

我从#buffalo slack 频道找到了解决方案。问题在于 -

func (a *User) SelectLabel() string {
    return a.Name
}

func (a *User) SelectValue() interface{} {
    return a.ID
}

这些不应该是指针方法。正确的版本是——

func (a User) SelectLabel() string {
    return a.Name
}

func (a User) SelectValue() interface{} {
    return a.ID
}
于 2020-07-14T12:51:26.963 回答