Как я могу написать форму для ввода списка текста с ActiveAdmin? - PullRequest
0 голосов
/ 04 июня 2019

Я пишу форму ActiveAdmin для записи, которая принимает массив строк. Давайте назовем их виджетами. Я использую форму множественного выбора, например, так:

ActiveAdmin.register Things do
  permit_params widgets[]

  form do |f|
    f.inputs do
      ...
      f.input :widgets,
        as: :select,
        collection: [],
        multiple: true
    end
  end
end

С небольшим количеством Javascript, чтобы помочь пользователю, можно ввести свои виджеты, и он будет доставлен как Array of Strings. Но при редактировании существующей записи существующие record.widgets не заполняются в поле, поле виджетов остается пустым. Я подозреваю, что происходит, когда ActiveAdmin / Formtastic интерпретирует этот выбор как отношение has_many с Widget, а строки - как идентификаторы Widget. ActiveAdmin игнорирует ошибку.

Как я могу написать вход для передачи простого массива строк в модель с ActiveAdmin? Я хотел бы, чтобы мои параметры как params[:thing][:widgets] = ["foo", "bar"]

1 Ответ

0 голосов
/ 14 июня 2019

Предоставляя collection: [], вы указываете, чтобы форма всегда начиналась с пустого массива.

Вы должны предоставить виджеты Thing для формы. Вам нужно будет изменить пример, чтобы он хорошо играл с выбранным вами блоком выбора / javascript - просто имейте в виду, что коллекция принимает массив - collection: resource.widgets.split(',').

...