2011-01-13 43 views
1

我正在運行rails 3和paperclip 2.3.4。在OS X上的開發中,每件事物都運行得很好,但生產中存在一些我無法想象的問題。如果有人有任何建議,請讓我知道。在生產中使用回形針插件的錯誤。圖像未保存到服務器

我正在使用FLASH上傳文件。就像我說的,當地的發展很好。

我檢查了生產日誌,它看起來像POST發生得很好。

Started POST "/addimage" for 10.0.136.119 at 2011-01-13 19:49:09 +0000 
    Processing by BowlsController#create as HTML 
    Parameters: {"Filename"=>"IMG_0585.JPG", "fbid"=>"123456789", "Filedata"=>#<ActionDispatch::Http::UploadedFile:0x000000054afdf8 @original_filename="IMG_0585.JPG", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"Filedata\"; filename=\"IMG_0585.JPG\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/tmp/RackMultipart20110113-23741-bhze8q>>, "Upload"=>"Submit Query"} 
Completed 200 OK in 64ms (Views: 0.4ms | ActiveRecord: 0.9ms) 

這裏是軌道,我打電話

def create 
    @user = User.find_by_fbid(params[:fbid]) 

    if @user.nil? 
     #create user and register if user does not exist 
     @user = User.new(:fbid => params[:fbid]) 
     @user.save 
    end 

    if params[:Filedata] 
     @image = @user.images.build() 
     @image.swfupload_file = params[:Filedata] 

     if @image.save 
     render :json => { :data => @image, :success => true } 
     else 
     render :json => { :info => "error", :success => false } 
     end 
    else 
     @image = Image.new params[:img] 
     if @image.save 
     render :json => { :data => @bowl, :success => true } 
     else 
     render :json => { :info => "error", :success => false } 
     end 
    end 
    end 
end 

基本上是一個用戶可以有很多圖片,所以我必須確保用戶存在的動作。如果它們不存在,我會先創建一個新用戶。

我也有另一種方法,可以讓我抓住用戶上傳的最後一張圖片的路徑,這也會返回生產中的錯誤。

def last_img 
    @user = User.find_by_fbid(params[:fbid]) 

    if @user.nil? 
     render :json => { :error => "no bowls for this user" } 
    else 
     bowl = @user.images.first 

     render :json => { :img_path => image.img.url} 
    end 
    end 

,我得到這個錯誤在ImagesController#last_image以下 NoMethodError

未定義的方法`IMG」的零:NilClass

回答

0

我覺得你的代碼有點失落。

如果它確實是您的實時代碼的副本,那麼image.img可能會在#last_img中引發異常,因爲它可能未初始化(至少不在您提供的代碼中)。但它會引發一種不同的例外情況,而不是零:NilClass

如果它是一個錯字,並且您遇到問題@image.img那麼問題是相同的 - 什麼是您的控制器的工作流程 - 如果它被稱爲是那麼它真的會拋出零:NilClass因爲沒有@image任何地方的#last_img

代碼而另一件事初始化 - 要初始化局部變量bowl那裏,有沒有用呢?

最後一個,現在在#create - @ bowl從哪裏來?從提供的代碼,它應該始終是nil

相關問題