2010-10-21 5 views
0

J'ai un script à deux lignes qui fonctionne bien dans ruby. Je me suis déplacé à HAML et obtenir l'erreurconstante non initialisée Tilt :: CompileSite :: erreur Nokogiri dans sinatra/haml

NameError at/ uninitialized constant Tilt::CompileSite::Nokogiri

le code haml:

 %td 
     - @doc = Nokogiri::XML(File.open(file)) 
     = @doc.xpath("//testsuite").each_with_index {|node,index| "#{index+1}. #{node.attributes["name"].value}<BR>" } 

une idée comment je peux le faire fonctionner?

utilisant ci-dessous sur Win XP SP3

  • rubis 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32]
  • nokogiri (1.4.3.1 x86-mingw32)
  • sinatra (1.0)
  • mince (1.2.7 x86-mswin32)

Répondre

0

ne savent toujours pas pourquoi l'erreur se produit, mais je l'ai résolu par avoir une fonction définie dans le fichier et de l'appeler sinatra dans haml fichier = get_testsuite(file)

def get_testsuite (file) 

    @doc = Nokogiri::XML(File.open(file)) 
    output = Array.new 
    @doc.xpath("//testsuite").each_with_index {|node,index| 
    output << "#{index+1}. #{node.attributes["name"].value}<BR>" 
    } 
    return output 
end 
1

Essayez ceci:

%td 
    - @doc = ::Nokogiri::XML(File.open(file)) 
    = @doc.xpath("//testsuite").each_with_index {|node,index| "#{index+1}. #{node.attributes["name"].value}<BR>" } 
+0

au lieu de '1. login 2. AddCycleTemplate 3. AddAcademicYear' sur trois lignes j'obtiens '0 nom description 0 nom description 0 nom description' sur une ligne. Donc le nombre de nœuds est correct mais l'index est toujours 0 et 'name' n'est pas correct non plus. Mais je ne reçois pas l'erreur initiale. Qui est genial. Je vous remercie. – Radek

+0

Ok, je ne pensais pas. Vous ne souhaitez pas afficher la valeur de retour de each_with_index: https://gist.github.com/e21140baeda491152510 –

Questions connexes