2016-09-15 5 views
0

Мне грозит сложность отображения вывода postgresql в рубине, а также если есть какой-либо способ распечатать тот же результат в html.Postgresql recordset display display in Ruby cucumber

Ниже приведен код и ошибки:

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 

ОШИБКА:

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 

ответ

0

Один из ваших row[whatever] значений равна нулю. Если вы бросаете все на строку, она должна работать.

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 

Даже лучше, вы можете использовать метод .join(), чтобы сделать это и очистить вашу логику, в то же время.

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

EDIT!

Плохо, это хэш, а не массив. Дайте мне 10 минут, и я дам вам правильный ответ ...

EDIT 2

Поскольку это хэш, необходимо добавить метод .values там.

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