即使照片上传,Carrierwave也会返回406 Not Acceptable

时间:2011-08-17 11:25:07

标签: ruby-on-rails ruby-on-rails-3 mongoid carrierwave image-uploading

我正在使用Carrierwave使用简单的控制器将照片上传到我的rails应用程序:

  # POST /photos
  # POST /photos.xml
  def create
    @photo = Photo.new(params[:photo])

    respond_to do |format|
      if @photo.save
        format.html { redirect_to(@photo, :notice => 'Photo was successfully created.') }
        format.xml  { render :xml => @photo, :status => :created, :location => @photo }
        format.json { render :json => @photo, :status => :created }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @photo.errors, :status => :unprocessable_entity }
        format.json { render :json => @photo.errors, :status => :unprocessable_entity }
      end
    end
  end

我正在通过Ajax发送文件,尽管上传实际上已经保存并正确处理,但Rails仍然会返回一个神秘的Completed 406 Not Acceptable

Started POST "/photos" for 127.0.0.1 at 2011-08-17 14:20:01 +0300
  Processing by PhotosController#create as JS
  Parameters: {"Filename"=>"IMG_5758.JPG", "folder"=>"/apartments/4e4ba2e735be35f40a00000b/", "_http_accept"=>"application/javascript", "fileext"=>"*.png;*.jpg;*.gif", "_dirot_session"=>"BAh7CEkiD3Nlc3Npb25faWQGOgZFRiIlOTYxNGM2MDk3NmU0YjRjN2U3NjMzNTA1YmQwMDg5MWJJIgx1c2VyX2lkBjsARm86E0JTT046Ok9iamVjdElkBjoKQGRhdGFbEWlSaQH0aQHtaQGUaTppAb5pOmkSaQGAaQBpAGkGSSIQX2NzcmZfdG9rZW4GOwBGSSIxb2RDcm9OMXRkYis3MXZpQ1ZtN1ZkZE54TmhTckFzalVBUmFTQWxxeU4yQT0GOwBG--2b5bc2b162dc2a1423750cbae32d5238d5c45064", "authenticity_token"=>"odCroN1tdb 71viCVm7VddNxNhSrAsjUARaSAlqyN2A=", "photo"=>{"apartment_id"=>"4e4ba2e735be35f40a00000b", "image"=>#<ActionDispatch::Http::UploadedFile:0x000001033fe810 @original_filename="IMG_5758.JPG", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"photo[image]\"; filename=\"IMG_5758.JPG\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/var/folders/qI/qIWmC9LgFB0Dk8E4z1xjAE+++TI/-Tmp-/RackMultipart20110817-62474-4akysm>>}, "Upload"=>"Submit Query"}
Creating scope :near. Overwriting existing method Apartment.near.
MONGODB dirot_development['apartments'].find({:_id=>BSON::ObjectId('4e4ba2e735be35f40a00000b')})
MONGODB dirot_development['photos'].insert([{"apartment_id"=>BSON::ObjectId('4e4ba2e735be35f40a00000b'), "_id"=>BSON::ObjectId('4e4ba3ea35be35f40a00000f'), "updated_at"=>2011-08-17 11:20:10 UTC, "image_filename"=>"IMG_5758.JPG", "created_at"=>2011-08-17 11:20:10 UTC}])
Completed 406 Not Acceptable in 9125ms

你知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

您的控制器正在处理您的请求为“JS”。但是,您的控制器操作仅响应html,xml和json。为format.js和相关回复添加行。