Как сопоставить имена входа в activeadmin? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть модель Tag в виде полиморфной таблицы, которую я использую в двух моделях Account и Activity.Я хотел бы заменить учетные записи и активность их именами при выборе их в активной форме администратора.

Форма работает, когда учетные записи или действия отображаются в виде экземпляров.Но когда я пытаюсь заменить их на их имена (см. Код ниже), я получаю сообщение об ошибке «должно существовать и не может быть пустым» в форме.Я просмотрел документацию ActiveAdmin, но не смог найти свой ответ.

ActiveAdmin.register Tag do
  # belongs_to :spot
  permit_params :name, :taggable_type, :taggable_id

  form do |f|
    f.semantic_errors
    f.inputs do
      f.input :name,
        collection: Tag::TAG_NAMES
      f.input :taggable_type,
        collection: Tag::TAGGABLE_TYPES
      f.input :taggable, label: "Account / Activity",
        collection: Account.all.map { |a| a.nickname } + 
                    Activity.all.map { |act| act.name }
    end
    f.actions
  end
end

Я хотел бы иметь что-то вроде label_method и value_method, которое позволило бы мне отображать учетные записи и действия с их именами вместо экземпляров,что совсем не удобно для пользователя, но все же сохраните их как экземпляры без получения упомянутой ошибки.

Любая помощь с благодарностью, спасибо:)

1 Ответ

0 голосов
/ 19 февраля 2019

Вам нужно передать id в качестве значения опции.Попробуйте

f.input :taggable_id, label: "Account / Activity",
  collection: Account.all.map { |a| [a.nickname, a.id] } + 
              Activity.all.map { |act| [act.name, act.id] }
...