Как я могу остановить замену поля ввода моего файла полями ввода текста?
Версия:
Рельсы 5.2.1
ruby 2.5.1p57 (версия 20130-03-29 63029) [x86_64-linux]
рвм 1.29.4
Я использую форму Active Admin для создания нового объекта - product
, который может иметь много support_docs
. support_doc
имеет два атрибута:
- Вложение файла Active Storage
- имя файла
Форма отлично работает, если я не включаю ввод support_doc :filename
- например, я могу прикрепить файл без проблем. Но когда я включаю ввод атрибута filename
или любое другое поле ввода, поле ввода файла исчезает (даже в HTML DOM).
Шаги для воспроизведения:
- Создайте модель (назовем ее A), которая имеет много других моделей (B)
- В A разрешить вложенные атрибуты для B
- В форме для создания 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
):
И когда я включаю :filename
вход:
Как видите, поле ввода файла заменяется любым полем ввода, которое я включаю. Я провел как можно больше исследований по этому вопросу, но я не могу найти никого с подобной проблемой!