Визуализация SelectTag () с параметрами из массива моделей - PullRequest
1 голос
/ 14 июля 2020

У меня в приложении есть модель User и модель App. App имеет отношение belongs_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 для рендеринга параметров из массива users?

Ниже не работает -

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

1 Ответ

2 голосов
/ 14 июля 2020

Я нашел решение на канале #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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...