Добрый день.
Пытаюсь реализовать drag and drop с помощью dropzonejs-rails + Paperclip.
Суть в том что есть таблица attachments у которое есть обязательное поле doc_type и если оно не указано, то не пройдет валидация.
doc_type это тип документа, к примеру накладная, счет и т.д.
Я хочу сделать следующее
1. Перетаскиваю в форму для drag and drop несколько файлов
2. Проставляю каждому файлу doc_type
3. Жму кнопку Create
пока получилось сделать только первый пункт, перетаскиваю файлы они автоматом начинают загружаться на сервер и естественно не проходят валидацию, так как doc_type пустой
подскажите пожалуйста, как можно реализовать остальные два пункта? заранее благодарю.
JS
$(document).on 'ready', ->
Dropzone.autoDiscover = false;
$("#new_attachment").dropzone(
maxFilesize: 15
addRemoveLinks: true
paramName: "attachment[doc]"
success: (file, response) ->
response = JSON.parse(file.xhr.response)
showDocTemplate = HandlebarsTemplates['show_doc_links'](attachments: [response.attachment])
$('.show-doc__message').replaceWith('<div class="show-doc__link-group"></div>')
$('.show-doc__link-group').append(showDocTemplate)
)
VIEW
= form_for [@shipment, Attachment.new], html: { multipart: true, class: 'dropzone' } do |f|
.fallback
= f.file_field :doc
CONTROLLER
class AttachmentsController < ApplicationController
before_action :set_attachment, only: :create
load_and_authorize_resource
respond_to :js, except: :create
respond_to :json, only: :create
def show
send_file @attachment.doc.path, disposition: 'inline'
end
def create
@attachment.save
respond_with @attachment
end
def destroy
respond_with @attachment.destroy, location: location
end
private
def location
if @attachment.attachable.is_a?(Flight)
admin_flights_url(@attachment.attachable)
else
@attachment.attachable
end
end
def attachment_params
params.require(:attachment).permit(:doc, :doc_type)
end
def set_attachment
attachable_id = params.keys.detect { |k| k =~ /(shipment|flight)_id/ }
attachable = $1.classify.constantize.find(params[attachable_id])
@attachment = attachable.attachments.build(attachment_params)
end
end
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости