Для формы с несколькими загрузки вы можете попробовать это:
# active admin
form do |f|
f.inputs "ModelName" do
f.input :name
end
f.has_many :attachments do |ff|
ff.input :path
end
end
# your_model.rb
attr_accessible :attachments_attributes
has_many :attachments
# your_model.rb (add after relations)
accepts_nested_attributes_for :attachments, :allow_destroy => true
Смотри также: accept nested attributes for has_many relationship
Использование рельсов валидаторов будет препятствовать форме от спасаемых, если не прошло.
# attachment.rb
validates :check_size
validates :check_if_pdf
def check_size
errors.add :path, "Size is NOT ok" if self.size < XXX
end
def check_if_pdf
errors.add :path, "File is NOT pdf" unless self.path.to_s.split('.').last == 'pdf'
end
Не уверен, что Скрепка ... Carrierwave является удивительным, так и, если вы открыты для этого драгоценного камня вы можете попробовать это:
# attachment.rb
mount_uploader :path, MyUploader
# app/uploaders/my_uploader.rb
class MyUploader < CarrierWave::Uploader::Base
storage :file # For local storage
#storage :fog # If using S3
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def filename
@name ||= "#{File.basename(original_filename, '.*')}" if original_filename.present?
end
end
Carrierwave имеет метод extension_white_list, что вы можете попытаться проверить что его документ в формате PDF
# uploaders/my_uploader.rb
def extension_white_list
%w(pdf jpg jpeg gif png csv)
end
Это было очень полезно после этого, как я могу загрузить несколько файлов с помощью Paperclip и activeAdmin gem? –
Хорошо, добавили несколько строк, если вы хотите перейти на Carrierwave. – James
Еще раз спасибо, могу ли я добавить вас в Skype? Я действительно новичок в мире Rails. –