def export_no_sdesc(item_no = " ", make = " ", model = " ", list_price = " ", long_desc = " ", global_image_path = " ")
final_image_path = global_image_path + item_no + ".jpg"
final_thumbs_path = global_image_path + "thumbs/" + item_no + ".jpg"
Dir.glob("body.tmp") do |filename|
body = file_as_string(filename)
body = body.gsub("item_no", item_no).gsub("image_path", final_image_path).gsub("image_thumb", final_thumbs_path)
body = body.gsub("part_make", make).gsub("part_model", model).gsub("long_desc", long_desc).gsub("list_price", list_price)
File.open('page_export.html', 'a') do |x|
x.puts body
x.close
end
end
end
위의 함수를 사용하면 적합합니다. 첫째, 텍스트 파일에서 일부 문자열을 읽습니다. 그런 다음 HTML 테이블의 일부에 대한 템플리트 인 텍스트 파일을 읽습니다. 그런 다음 템플릿 파일의 특정 키워드를 문자열의 내용으로 바꾸고 마지막으로이 파일을 새 텍스트 파일 (page_export.html)로 푸시합니다.Ruby :`gsub ': nil을 String으로 변환 할 수 없습니다 (TypeError)
여기에서 문제는 텍스트 파일에서 가져 오는 일부 필드가 비어 있거나 최소한 문제라고 생각합니다. 어느 쪽이든,이 오류가 얻을 :
[email protected]:~/code/ruby/idealm_db_parser$ ruby html_export.rb
html_export.rb:34:in `gsub': can't convert nil into String (TypeError)
from html_export.rb:34:in `export_no_sdesc'
from html_export.rb:31:in `glob'
from html_export.rb:31:in `export_no_sdesc'
from html_export.rb:82
from html_export.rb:63:in `each'
from html_export.rb:63
from html_export.rb:56:in `glob'
from html_export.rb:56
가이를 해결하기를,뿐만 아니라 내가 각 문자열에 대한 기본 인수로 공백을 선언하지만 않은 스크립트 각 문자열을 통해, 내가 루프의 다른 부분에서 - 그리고 경우 그것은 비어 있고 공백을 추가합니다. 아직도 운이 없다.
필자는 위의 기능과 거의 동일한 기능을 가지고 있지만 약간 다른 데이터 집합 (빈 문자열이없는 기능)을 통해 작동하며 훌륭하게 작동합니다. 또한 공백을 추가하는 코드를 테스트 한 결과 제대로 작동합니다.
그래서 내가 뭘 잘못하고 있니?
고마워 meagar 디스플레이 수정을 위해 :) – m4risU
그래, 죄송합니다, 여전히 Markdown 주위에 내 머리를 감싸려고 ... – eckza