1

我使用Rails 3,Uploadify,將圖像發送到S3的Rails 3 -NoMethodError(未定義的方法`original_filename

現在所有被上傳的圖像具有MIME:應用程序/八位字節流

我想解決這個問題,但我發現了以下錯誤:

NoMethodError (undefined method `original_filename' for #<ActiveSupport::HashWithIndifferentAccess:0x107c81998>): 
    app/models/photo.rb:29:in `upload_file=' 
    app/controllers/photos_controller.rb:15:in `upload' 
    app/middleware/flash_session_cookie_middleware.rb:14:in `call' 

我想這是因爲所有的教程在那裏不Rails 3的友好任何人有任何的想法下面的代碼。?

# Controller 

def create 
    @photo = Photo.new(:upload_file => params[:photo][:image]) 
    ... 
end 

# Model 

class Photo < ActiveRecord::Base 
    require 'mime/types' 
    ... 
    def upload_file=(data) 
    data.content_type = MIME::Types.type_for(data.original_filename).to_s 
    self.image = data 
    end 
end 

回答

1

我不熟悉Uploadify,但它似乎只是一個javascript發電機...

你在傳遞一個PARAMS的值是「數據」爲#upload_file =。然後你在params [:photo] [:image]上調用一個方法(#original_filename)。 Rails說params [:photo] [:image]沒有這樣的方法。

'mime/types'中是否有某種File類?你應該先創建該File對象嗎?

file = File.new(params[:photo][:image]) 

,然後更改文件屬性:

file.content_type = ... 

編輯:

是否使用回形針寶石?你正在使用的教程是使用回形針。所以在「@ asset.file_content_type = MIME :: Types.type_for(@ asset.original_filename).to_s」中,我認爲@asset是一個paperclip的File類的實例,它有一個#original_filename方法。但是,在回形針文檔中沒有看到#file_content_type =()方法。

+0

謝謝,但我不知道...我試圖按照教程在這裏:http://railstips.org/blog/archives/2009/07/21/uploadify-and-rails23/ – TheExit 2010-10-26 16:23:40

相關問題