Общий ответ Rails XML на успешное действие AJAX? - PullRequest
1 голос
/ 25 января 2011

Я думаю, что это должен быть простой синтаксический вопрос, но я не уверен, что мой подход правильный.Я использую скрепку, чтобы принять загрузку файла из Flash.Действие успешно создает объект и сохраняет загрузку, но когда оно пытается сгенерировать ответ XML с помощью генератора XML по умолчанию, я думаю, что оно блокирует попытку включения вложения скрепки в файл XML.Rails показывает ошибку 406, а Flash выдает ошибку ввода-вывода.

Я нашел хороший ресурс для вложения вложений скрепок в XML , но это полное перерасходВсе, что нужно для прошивки - это сообщение об успехе или неудаче.Что-то вроде:

def jpg_stream
  @photo = Photo.new(:name => params[:name], :uploaded => Time.now)
  @photo.image = params[:image]
  respond_to do |format|
    if @photo.save
      format.xml  { "<success/>" }
    else 
      format.xml  { render :xml => @photo.errors, :status => :unprocessable_entity }
    end
  end
end

Какой должна быть эта строка?

format.xml  { "<success/>" }

РЕДАКТИРОВАТЬ

Это трассировка стека ошибок.Я думаю, что у Rails нет проблем с возвратом того, что сгенерировано, ошибка 406 означает, что браузер / Flash не примет ответ.

Started POST "/generate_jpg" for 127.0.0.1 at 2011-01-25 12:59:24 -0700
  Processing by PhotosController#jpg_stream as HTML
  Parameters: {"name"=>"Test snapshot", "stream_id"=>"1", "Filename"=>"this.jpg",     "image"=>#<ActionDispatch::
Http::UploadedFile:...
[paperclip] identify -format %wx%h "C:/Users/Sam/AppData/Local/Temp/stream20110125-4048-zqbu60.jpg[0]" 2>NUL
  ←[1m←[35mAREL (1.0ms)←[0m  INSERT INTO "photos" ("name", "description", "stream_id", "created_at", "updated_at", "image_file_name", "image_content_type", "image_file_size", "image_updated_at") VALUES ('Test snapshot', '2011-01-25 19:59:24.630999', 1, '2011-01-25 19:59:24.687002', '2011-01-25 19:59:24.687002', 'this.jpg', 'application/octet-stream', 12251, '2011-01-25 19:59:24.651000')
[paperclip] Saving attachments.
[paperclip] saving .../system/images/86/original/this.jpg
Completed 406 Not Acceptable in 108ms

1 Ответ

1 голос
/ 25 января 2011

Сначала я бы попробовал более простую версию: render :xml => "<success/>". Т.е., отбросить respond_to полностью, оставить только

if @photo.save
  render :xml => "<success/>"
else 
  render :xml => @photo.errors, :status => :unprocessable_entity
end

Я не уверен во всех нюансах respond_to (не используйте его сам), но выполнение format.xml { "<success/>" } может потребовать от вас шаблона erb.

Включение ошибки трассировки стека тоже было бы неплохо.

...