2011-01-07 11 views
0

私のPOST配列からparamを取得し、それをMySQLデータベースに挿入する時間があります。ファイルはRAILS 3コントローラに送信されます。コントローラは、ファイル名をプルしてSQL文の値として使用する必要があります。AjaxのアップロードPOSTデータがRails 3のデータベースに挿入されない

def upload 
    @item= Item.new(params[:qqfile]) 
    Rails.logger.info("PARAMS: #{params.inspect}") 
    # if params array contains :qqfile 
    unless params[:qqfile].empty? 
     # model should: 
     # copy file to uploads directory 
     render_success 
     if @item.save 

     else 
     render :text => 'database did not save' 
     end 
     # redirect to render success action 
    else 
     render :text => '{success:false}' 
    end 
    end 

ログは、クエリが実行されていることを示しているが、NULL値を持つ:これは私のコントローラである

Started POST "/item/upload?qqfile=1eCH6.jpg" for 127.0.0.1 at Fri Jan 07 09:16:0 
9 -0700 2011 
    Processing by ItemController#upload as HTML 
    Parameters: {"qqfile"=>"1eCH6.jpg"} 
PARAMS: {"qqfile"=>"1eCH6.jpg", "controller"=>"item", "action"=>"upload"} 
Rendered text template (0.0ms) 
    SQL (0.0ms) INSERT INTO `items` (`name`, `qqfile`, `created_at`, `updated_at` 
) VALUES (NULL, NULL, '2011-01-07 16:16:10', '2011-01-07 16:16:10') 
Completed 200 OK in 359ms (Views: 16.0ms | ActiveRecord: 0.0ms) 

キーが配列にあります。コントローラがSQLクエリの値にその値を使用していない理由が混乱しています。

答えて

0

ファイルのアップロードにはpaperclipを使用することを強くお勧めします。アップロードを処理することは苦痛になることがあり、クリップはそれをはるかに簡単にします。

+0

この場合、実際のフォームが送信される前に行われるajaxアップロードでした。一般的なファイルのアップロードについては、Paperclipは素晴らしいですが、進行状況バーでajaxをやっているときにはそれほど素晴らしいものではありません。 –

関連する問題