2016-09-15 4 views
0

Ich habe Schwierigkeiten mit der Postgresql-Ausgabe in Ruby angezeigt und auch, wenn es eine Möglichkeit gibt, die gleiche Ausgabe in HTML zu drucken.Postgresql-Recordset-Ausgabe-Anzeige in Ruby Gurke

Da unten ist der Code und Fehler:

Then(/^selecting source table$/) do 
    require 'pg' 
    conn = PGconn.connect("localhost",5433,'','', "db", "postgres", "pass") 
    result = conn.exec('select EMP_ID,DEPT_ID,DEPT_NAME,EMP_NAME from EMP_TABLE') 
    result.each do |row| 
    puts row['EMP_ID'] + ' | ' + row['DEPT_ID'] + ' | ' + row['DEPT_NAME'] + ' | ' + row['EMP_NAME'] 
    end 
end 

ERROR:

NoMethodError: undefined method +' for nil:NilClass 
    ./features/step_definitions/my_steps.rb:45:inblock (2 levels) in ' ./features/step_definitions/my_steps.rb:44:in each' 
    ./features/step_definitions/my_steps.rb:44:in/^selecting source table$/' ./features/PG.feature:12:in `Then selecting source table' 1 scenario (1 failed) 1 step (1 failed) 0m0.072s 

Antwort

0

Einer Ihrer row[whatever] Werte ist gleich Null. Wenn Sie alles in eine Zeichenfolge umwandeln, sollte es funktionieren.

result.each do |row| 
    puts row['EMP_ID'].to_s + ' | ' + row['DEPT_ID'].to_s + ' | ' + row['DEPT_NAME'].to_s + ' | ' + row['EMP_NAME'].to_s 
end 

Noch besser ist, können Sie die .join() Methode verwenden, das zu tun und Ihre Logik zur gleichen Zeit aufzuräumen.

result.each do |row| 
    puts row.join(' | ') 
end 

BEARBEITEN!

Meine schlechte, das ist ein Hash, kein Array. Gib mir 10 Minuten und ich werde Ihnen die richtige Antwort ...

EDIT 2

Da es ein Hash ist, müssen Sie die .values Methode dort hinzuzufügen.

result.each do |row| 
    puts row.values.join(' | ') 
end