2014-01-17 74 views
0

我在Rails 4中整合了Kendo UI編輯器和我自定義的CMS。除了新圖片上傳後的錯誤,一切似乎都奏效。 選擇要上傳的圖像後,ImageBrowser會添加一個新項目並顯示「正在上傳」圈子。首先它在圓圈附近顯示圖像的文件名,然後它變成未定義的。 Undefined bug in Kendo ImageBrowserRails 4 - Kendo UI ImageBrowser成功上傳,但未定義縮略圖

但是,如果我關閉ImageBrowser然後再次打開它,縮略圖就像預期的那樣,沒有錯誤。如果我在控制器中人爲產生一個錯誤,在創建動作結束時,然後在Kendo ImageBrowser(404或500)中出現錯誤彈出窗口,如果在點擊ok按鈕之前稍等一會,然後單擊它的縮略圖也如預期那樣。

所以我想兩兩件事:

  1. 我不是提供一份在創建動作結束的正確/預期的響應ImageBrowser的。 (試圖呈現相同的JSON,因爲我爲render.read提供了這個問題,但問題仍然存在)。 在這種情況下,我的問題是:Kendo ImageBrowser期待什麼樣的響應?
  2. 上傳/處理/調整圖像大小需要時間,而且kendo要求過早(所以它會得到「未定義」的結果),並且不會再次「詢問」。 在這種情況下,我的問題是:如何/何時延遲或再次讀取以正確顯示新上傳的圖像的縮略圖,而不會返回undefined?

任何建議來解決這個問題?還是在Kendo UI方面出錯?

下面有從輸出片段:

Started POST "/kezelo/assets" for 127.0.0.1 at 2014-01-17 18:09:33 +0100 
Processing by Kezelo::AssetsController#create as */* 
    Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x007fa78bb00b00 @tempfile=#<Tempfile:/var/folders/90/wjyhxjfs3gz3xkhsk8z_sz2w0000gn/T/RackMultipart20140117-49102-5lwwh4>, @original_filename="100_3048.JPG", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"100_3048.JPG\"\r\nContent-Type: image/jpeg\r\n">, "path"=>"", "authenticity_token"=>"sdKhe348x26hm0k8kirzHlYgmH1LN73wf3ZWyOA5PHY="} 
    (0.1ms) begin transaction 
    SQL (0.7ms) INSERT INTO "assets" ("created_at", "image_file_size", "kendo_type", "photo", "updated_at") VALUES (?, ?, ?, ?, ?) [["created_at", Fri, 17 Jan 2014 17:09:35 UTC +00:00], ["image_file_size", 247716], ["kendo_type", "f"], ["photo", "100_3048.JPG"], ["updated_at", Fri, 17 Jan 2014 17:09:35 UTC +00:00]] 
    (1.6ms) commit transaction 
    Asset Load (0.4ms) SELECT "assets".* FROM "assets" 
Completed 200 OK in 1416ms (Views: 29.7ms | ActiveRecord: 2.7ms) 


Started GET "/uploads/assets/undefined" for 127.0.0.1 at 2014-01-17 18:09:35 +0100 

ActionController::RoutingError (No route matches [GET] "/uploads/assets/undefined"): 
    actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    actionpack (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
    railties (4.0.2) lib/rails/rack/logger.rb:38:in `call_app' 
    railties (4.0.2) lib/rails/rack/logger.rb:20:in `block in call' 
    activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `block in tagged' 
    activesupport (4.0.2) lib/active_support/tagged_logging.rb:25:in `tagged' 
    activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `tagged' 
    railties (4.0.2) lib/rails/rack/logger.rb:20:in `call' 
    actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
    rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.5.2) lib/rack/runtime.rb:17:in `call' 
    activesupport (4.0.2) lib/active_support/cache/strategy/local_cache.rb:83:in `call' 
    rack (1.5.2) lib/rack/lock.rb:17:in `call' 
    actionpack (4.0.2) lib/action_dispatch/middleware/static.rb:64:in `call' 
    rack (1.5.2) lib/rack/sendfile.rb:112:in `call' 
    railties (4.0.2) lib/rails/engine.rb:511:in `call' 
    railties (4.0.2) lib/rails/application.rb:97:in `call' 
    rack (1.5.2) lib/rack/lock.rb:17:in `call' 
    rack (1.5.2) lib/rack/content_length.rb:14:in `call' 
    rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' 
    /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' 
    /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' 
    /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' 


    Rendered /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms) 
    Rendered /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/routes/_route.html.erb (4.4ms) 
    Rendered /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/routes/_table.html.erb (1.4ms) 
    Rendered /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (47.9ms) 

我的傳輸讀網址爲(與數據類型:JSON):

http://localhost:3000/kezelo/assets 

的JSON輸出用於上述URL:

[{"id":21,"name":"MAP_0528.JPG","type":"f","size":573896},{"id":22,"name":"MAP_0565.JPG","type":"f","size":646608},{"id":24,"name":"MAP_0667.JPG","type":"f","size":370408},{"id":26,"name":"mami_a_kertben.JPG","type":"f","size":364433},{"id":28,"name":"15kg_os.jpg","type":"f","size":975517},{"id":29,"name":"MAP_0257.jpg","type":"f","size":357723},{"id":31,"name":"DSC_0113.JPG","type":"f","size":574744},{"id":33,"name":"DSC_0062.JPG","type":"f","size":287631},{"id":34,"name":"100_2997.JPG","type":"f","size":126418},{"id":35,"name":"100_2999.JPG","type":"f","size":364433},{"id":36,"name":"100_3002.JPG","type":"f","size":340892},{"id":37,"name":"100_3025.JPG","type":"f","size":199709},{"id":38,"name":"100_3005.JPG","type":"f","size":435145},{"id":39,"name":"100_3019.JPG","type":"f","size":152869},{"id":40,"name":"100_3033.JPG","type":"f","size":208811},{"id":41,"name":"100_3039.JPG","type":"f","size":264420},{"id":42,"name":"100_3048.JPG","type":"f","size":247716}] 

回答

2

問題已解決。我的第一個猜測是對的。我沒有爲Kendo ImageBrowser提供適當的響應。 它需要JSON格式這樣才上傳的圖像數據:

{"name":"new_image_name","type":"f","size":646608} 

現在,它就像一個魅力! 這種整合最棘手的問題是爲劍道提供合適的json輸出。對於那些想在他們的應用程序中使用此編輯器的人,請查看acts_as_api gem。它會緩解你的痛苦。