未定义的方法`name'对于nil:NilClass用于延迟作业的图像阵列

时间:2015-08-21 13:41:37

标签: ruby-on-rails gem rubygems delayed-job

您好我正以数组的形式从回形针发送多张图片,然后通过延迟作业处理每张图片, 模式视图代码是这样的

<%= 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之前推迟时,我都会收到错误 未定义的方法`name&#39;为零:NilClass 我的参数是这样的

{"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">]}}

毫不拖延它工作正常可以请任何人解释。我认为这是问题,因为我允许数组形式的属性。

1 个答案:

答案 0 :(得分:1)

在短暂的架构(Heroku)中,您的应用程序设计根本不起作用。哎呀,如果你甚至只有2台服务器,你的设计根本就无法工作。如果您只有一台服务器,这可能不相关。

如果我尝试进行多个文件上传,我肯定会使用直接的S3上传技术,而不是你在这里所做的(参见https://github.com/waynehoover/s3_direct_upload

最后,假设您使用resque-delayed作为“延迟”方法,则无法将对象直接传递给resque。您应该将对象保存到数据库,然后仅将对象ID传递给resque,以便作业可以重新加载它,create_slider_images可以使用id重新加载对象。