Rails 5.2.1: Ввод файла заменяется вводом текста - форма вложенных атрибутов ActiveAdmin - PullRequest
0 голосов
/ 13 сентября 2018

Как я могу остановить замену поля ввода моего файла полями ввода текста?

Версия:

Рельсы 5.2.1

ruby ​​2.5.1p57 (версия 20130-03-29 63029) [x86_64-linux]

рвм 1.29.4

Я использую форму Active Admin для создания нового объекта - product, который может иметь много support_docs. support_doc имеет два атрибута:

  1. Вложение файла Active Storage
  2. имя файла

Форма отлично работает, если я не включаю ввод support_doc :filename - например, я могу прикрепить файл без проблем. Но когда я включаю ввод атрибута filename или любое другое поле ввода, поле ввода файла исчезает (даже в HTML DOM).

Шаги для воспроизведения:

  1. Создайте модель (назовем ее A), которая имеет много других моделей (B)
  2. В A разрешить вложенные атрибуты для B
  3. В форме для создания A задайте поля файла и ввод имени файла для B во вложенных атрибутах has_many section

Product.rb

# == Schema Information
#
# Table name: products
#
#  id         :integer          not null, primary key
#  title      :string
#  created_at :datetime         not null
#  updated_at :datetime         not null


class Product < ApplicationRecord
  has_many :support_docs, inverse_of: :product

  accepts_nested_attributes_for :support_docs
end

Support_doc.rb

# == Schema Information
#
# Table name: support_docs
#
#  id         :integer          not null, primary key
#  created_at :datetime         not null
#  updated_at :datetime         not null
#  filename   :string
#  product_id :integer


class SupportDoc < ApplicationRecord
  has_one_attached :doc_file
  belongs_to :product

  validates_presence_of :product
end

products.rb (форма в ресурсе Active Admin)

ActiveAdmin.register Product do
  permit_params :title, support_docs_attributes: [:doc_file, :filename]

  form do |f|
    f.inputs do
      f.input :title
      f.has_many :support_docs do |doc|
        doc.file_field :doc_file, direct_upload: true
        doc.input :filename
      end
    end
    f.actions
  end
end
* +1047 * Пример: * +1048 *

Когда я не включаю вход :filename (строка 9 в products.rb): without line 9

И когда я включаю :filename вход: line 9 included

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

1 Ответ

0 голосов
/ 13 сентября 2018

Исправлено!

Проблема была вызвана doc.file_field. Я переключил это с doc.input :doc_file as: :file. Очевидно, что вы не сможете связать file_field во вложенную форму с inputs!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...