Dropzonejs with Rails add files categories from the page

258
19 октября 2017, 12:21

Добрый день. Пытаюсь реализовать 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
READ ALSO
Как посчитать разницу во времени (JS)?

Как посчитать разницу во времени (JS)?

Добрый день, мне приходят данные в string формате: '11:43' и '13:14' Помогите правильно написать скрипт что-бы высчитывал разницу между этими двумя...

546
javascript выдернуть время

javascript выдернуть время

offset выводит 1508321154018

299
slideToggle() не отодвигает нижние блоки на Safari

slideToggle() не отодвигает нижние блоки на Safari

Добрый деньУ меня почему-то в Safari при использовании slideToggle() не отодвигается нижний контент, а этот блок разворачивает под ни м

261