2012-06-01 2 views
0

그래서 Ruby on Rails에서 장바구니로 Spree를 사용하고 있습니다. Spree는 1-1 버전으로 안정적이고 Ruby는 v1.9.3이며 Ruby on Rails는 v3.2.3입니다.루비 레이크 작업을 사용하여 파일을 업로드하려고합니다.

내 Spree 장바구니에 다운로드 할 이미지가있는 원격 호스트가 있습니다. 이것은 이것을 사용하기 위해 사용하는 코드입니다. 그 중 일부는 이해가되지 않을 수 있습니다. 왜냐하면 내가 이것을 할 수있는대로 무엇이든하려고하기 때문에 약간의 청소를 사용할 수 있습니다. "-/공공/prod_images/29 해당 파일 또는 디렉터리"그리고 저기 "Dir.mkdir"라인을 참조

# 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 

는하지만 내가 오류는 말한다. 그러나 수동으로 작동하도록이 디렉토리를 만들었습니다. 필자의 예외 구조에서는 작업 디렉토리가 인쇄되어 있는데, 이는 내 컴퓨터에있는 내 응용 프로그램의 기본 디렉토리입니다. (나는 이것을 localhost atm에서 실행 중이다.)

나는 내 routes.rb 파일에서 뭔가를 할 필요가 있다고 생각하고 있는가? 하지만 Ruby on Rails의 초심자인데 어디서부터 시작해야할지 모르겠다. 문제가 있더라도.

+0

"/ public/prod_images /"또는 "public/prod_images /"를 만들었습니까? (첫 번째 것은 루트 아래에 있습니다. – Salil

+0

미안하지만 명확히해야합니다 :) 디렉토리를 만들기 전에 (그리고 이후에도)이 오류가 발생했습니다. 실제 파일 업로드가 제대로 작동하는지 확인하고 싶었습니다. RubyMine의 내 GUI 말 그대로 마우스 오른쪽 버튼으로 클릭하여/prod_images 및/29를 만들었습니다. :) – melissanoelle

+0

RubyMine에 익숙하지 않습니다. 그러나 경로에 관한 것이 아니라는 점을 안심하십시오. 레일과 관련이 없습니다. Dir.mkdir은 표준 Ruby 라이브러리의 일부이므로 Ruby (및 OS) 전용입니다. 경로의 앞뒤를 제거하고 작동하는지 확인하십시오. (실제 경로는 {Rails 응용 프로그램의 루트 디렉토리}/public/prod_images – Salil

답변

0

RubyMine에 익숙하지 않습니다. 그러나 경로에 관한 것이 아니라는 점을 안심하십시오. 레일과 관련이 없습니다. Dir.mkdir은 표준 Ruby 라이브러리의 일부이므로 Ruby (및 OS) 전용입니다. 경로의 앞뒤를 제거하고 작동하는지 확인하십시오. (따라서 실제 경로는 {Rails 응용 프로그램의 루트 디렉토리}/public/prod_images