2015-08-21 34 views
0

您好我在陣列的形式發送從紙夾多個圖像,然後通過延遲作業處理每個圖像, 模式視圖代碼是這樣的未定義的方法`名」:NilClass用於圖像的陣列延遲作業

<%= f.label :slider_image,'Slider Image' %> 
    <%= f.file_field :slider_image, :multiple => true, :accept => "image/*", required: true %> 

和控制器至於我的作爲陣列

def slider_image_params 
    params.require(:slider_image).permit({:slider_image=>[]}) 
end 
def create 
    slider_image_params[:slider_image].each do |img|  Spree::SliderImage.delay.create_slider_images(@selected_template,img) 
end 
end 

每當我create_slider_images前推杆延遲,收到錯誤 未定義的方法'名稱」的零:NilClass 我paramtes都是這樣的

{"utf8"=>"✓", 
"authenticity_token"=>"7d9yFPVvfTiywcX6YRMxqtk/gg4Y+T2pS0W8TcJ0L2w=", 
"slider_image"=>{"slider_image"=>[#<ActionDispatch::Http::UploadedFile:0x00000009e41e58 @tempfile=#<Tempfile:/tmp/RackMultipart20150821-8626-13ll574>, 
@original_filename="sliderbg.jpg", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"slider_image[slider_image][]\"; filename=\"sliderbg.jpg\"\r\nContent-Type: image/jpeg\r\n">]}} 

沒有延遲它工作正常任何人都可以請解釋。我認爲這是問題,因爲我允許數組形式的屬性。

+0

由於你沒有發佈你所看到的「nil:NilClass」的「未定義方法名稱」的代碼行的完整堆棧跟蹤,所以很難幫助你。請發佈完整的堆棧跟蹤(包括Rails + Gem行),看看例外情況。 –

+0

你還沒有指定你正在使用的工作隊列(Resque,Sidekiq等) –

+0

而且你還沒有指定延遲機制。誰定義「延遲」? –

回答

1

在一個短暫的架構(Heroku)中,你的應用程序設計根本不起作用。哎呀,如果你甚至只有2臺服務器,你的設計根本無法工作。如果你只有一臺服務器,這可能沒有關係。

如果我試圖做多文件上傳我肯定會使用直接S3上傳技術,而不是你在這裏做什麼(見https://github.com/waynehoover/s3_direct_upload

最後,假設你使用resque延遲你的「延遲'方法,你不能直接將對象直接傳遞給resque。您應該將對象保存到數據庫,然後僅將對象ID傳遞給resque,以便作業可以重新加載它,create_slider_images可以使用id重新加載對象。

相關問題