В Rails 1.2.1 ни ActionController :: CgiRequest, ни его родительский ActionController :: AbstractRequest не содержат метод body.Вы можете увидеть это, если посмотрите на эти страницы: cgi_process.rb и request.rb .Почему вы используете такие старые рельсы версии ??
ОБНОВЛЕНИЕ @Mr.Черный.Вы написали: «Можете ли вы сказать мне любой альтернативный способ прочитать входящий запрос, похожий на этот объект запроса».Вы используете библиотеку 'file-uploader' из github.Как я вижу, эта библиотека может загружать файлы на сервер двумя способами.Если у пользователя старые FF, браузеры Chrome или любая версия IE, эта библиотека отправляет запрос в iframe.Если пользователь имеет современную версию FF или Chrome, библиотека готовит асинхронную запись xmlHttpRequest.Поэтому в нашем контроллере рельсов мы должны справиться с обеими ситуациями.Например, для простоты мы хотим записать данные отправленного файла в какое-то жестко запрограммированное место на диске.
******** app/controllers/greetings_controller.rb ********
class GreetingsController < ApplicationController
def upload
begin
is_xhr = params[:qqfile].is_a? String
data = is_xhr ? request.body : params[:qqfile]
File.open("/some_place_on_disk/bar.txt", "w") { |f| f.write(data.read) }
@result = {success: true}
if is_xhr
render :json => @result
end
# else render view
rescue Exception => e
logger.info e
@result = {error: "Error has been encountered during the processing"}
end
end
end
******** app/views/upload.html.erb ********
<%= @result.to_json %>
******** config/routes.rb ********
.....
match '/upload' => 'greetings#upload', :via => :post
.....
Вы можете использовать demo.htm из проекта github, но вы должны поместить его в общую папку.Не забудьте про fileuploader.css и fileuploader.js!:) Вы должны изменить 'действие' в функции createUploader на путь действия, в моем случае это будет '/ upload'