2011-01-25 64 views
1

我认为这应该是一个简单的语法问题,但我不确定我的方法是否正确。我正在使用回形针接受来自Flash的文件上传。该动作成功创建了该对象并保存了上传,但是当它尝试使用默认的XML生成器生成XML响应时,我认为它试图将回形针附件包含在XML文件中。 Rails显示406错误,Flash引发I/O错误。我发现a good resource on embedding paperclip attachments in XML但这是完全矫枉过正。所有闪存需求都是成功或失败的消息。例如:成功AJAX操作的通用Rails 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/>" } 

EDIT

这是错误堆栈跟踪。我认为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

我会先尝试一个更简单的版本: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模板。

包括错误stacktrace也不错。