Показать сообщение отдельно
  #4 (permalink)  
Старый 29.06.2013, 19:28
Аватар для doniv
Аспирант
Отправить личное сообщение для doniv Посмотреть профиль Найти все сообщения от doniv
 
Регистрация: 02.03.2010
Сообщений: 73

Сообщение от 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])

Последний раз редактировалось doniv, 29.06.2013 в 19:42.
Ответить с цитированием