0

そこで、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 ルートの初心者なので、どこから始めればよいかわかりません... あるいは、それが問題なのかさえわかりません。

4

1 に答える 1

0

私は RubyMine にあまり詳しくありません。しかし、それはルートに関するものではないので安心してください。Rails固有のものではありません。Dir.mkdir は標準 Ruby ライブラリの一部であるため、Ruby (および OS) 固有です。先頭の / をパスから削除して、機能するかどうかを確認してください。(したがって、実際のパスは {Rails アプリのルート ディレクトリ}/public/prod_images になります。

于 2012-06-05T02:20:55.220 に答える