Сообщение от Deff
|
Не интересный вопрос...
|
Нужны не имена файлов отельно, а инпуты содержащие файлы. Но такого добится джаваскриптом не получается, потому что это дыры для атаки.
Разные инпуты нужны потому что кроме самих файлов для каждой модели изображения отправляется еще ряд параметров.
2. Про перетаскиевание вообще речи не было.
3. Это процесс последовательной, а не мультизагрузки.
-----
По сабж:
Распарсивание в контроллере оказалось самым удобным вариантом.
Сначала создаем фейковые поля с нужными name и value для последующего заполнения файлами в контроллере:
$(document).on 'change', '.jsPublicationImagesMultiupload', ->
#...
images = $(@).get(0).files
for i in [0..images.length-1]
createImageBlocks(images[i])
#...
createImageBlocks = (image) ->
#...
inputNew = $('<input>').attr({
type: 'hidden',
name: inputOld.attr('name') # берем правильный адрес отправки параметра из сгенерированого заранее инпута.
value: image.name + image.type
})
#...
#...
Тем временем в контроллере:
# Обновляем параметры перед отправкой в логику
params[:event][:publication_images_attributes].to_a.each do attr_publication|
params[:images].to_a.each do |image|
attr_publication[1][:image] = image if attr_publication[1][:image].to_s == (image.original_filename.to_s + image.content_type.to_s)
end
end
# В добрый путь
@event = Event.new(params[:event])