所以我在 Ruby on Rails 中使用 Spree 作为我的购物车。Spree 是 1-1-stable 版本,Ruby 是 v1.9.3,Ruby on Rails 是 v3.2.3。
我有一个远程主机,其中包含我想为我的 Spree 购物车下载的图像。这是我用来拉它的代码。其中一些可能没有意义,因为我正在尽我所能让它工作,所以它可以使用一点清洁。
# Add image to the product
vendor_id = plink_and_pull(item, "VendorID")
image_name = plink_and_pull(item, "ImageName")
# TODO: add if image exists to this unless
unless image_name.nil? || vendor_id.nil? || plink_and_pull(item, "ImageFound").to_i == 0 || File.exists?("/public/prod_images/#{vendor_id}/#{image_name.gsub(' ', '%20')}")
unless Dir.exists? "/public/prod_images/#{vendor_id}"
Dir.mkdir("/public/prod_images/#{vendor_id}", 777)
end
file = File.new("public/prod_images/#{vendor_id}/#{image_name.gsub(' ', '%20')}", 'w+')
file.binmode
open(URI.parse("http://login.xolights.com/vendors/#{vendor_id}/large/#{image_name.gsub(' ', '%20')}")) do |data|
file.write data.read
end
img = Spree::Image.create({:attachment => "public/prod_images/#{vendor_id}/#{image_name}",
:viewable => product}, :without_protection => true)
end
但是我得到的错误是“没有这样的文件或目录 - /public/prod_images/29”,它引用了那里的“Dir.mkdir”行。但是,我手动创建了这个目录来尝试让它工作。在我的异常救援中,我打印了工作目录,这是我机器上应用程序的基本目录。(我在 localhost atm 上运行它。)
我在想也许我需要在我的 routes.rb 文件中做一些事情?但我在 Ruby on Rails 路线上是个新手,我不知道从哪里开始......或者即使这就是这里的问题。