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
La fonction ci-dessus me donne des ajustements. Tout d'abord, il lit dans certaines chaînes à partir d'un fichier texte. Ensuite, il lit dans un fichier texte qui est un modèle pour une partie d'une table HTML. Ensuite, il remplace certains mots-clés dans le fichier modèle par le contenu des chaînes, et enfin, il pousse tout dans un nouveau fichier texte (page_export.html).Ruby: `gsub ': impossible de convertir nil en String (TypeError)
Le problème ici est que certains champs importés dans le fichier texte sont vides, ou du moins, je pense que c'est le problème. De toute façon, je reçois cette erreur:
[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
Pour y remédier, non seulement je déclare un espace comme un argument par défaut pour chaque chaîne, mais dans une autre partie du script, je boucle à travers chaque chaîne - et si c'est vide, j'ajoute un espace. Toujours pas de chance.
J'ai une fonction presque identique à celle ci-dessus, mais elle opère sur un ensemble de données légèrement différent - celui qui n'a pas de chaînes vides - et cela fonctionne très bien. J'ai également testé le code qui ajoute les espaces, et ça marche bien aussi.
Alors, qu'est-ce que je fais de mal?
merci meagar pour corriger d'affichage :) – m4risU
Ouais désolé, essayant toujours d'envelopper ma tête autour de Markdown ... – eckza