Ruby SQL: неопределенный метод `[] '

0

Я думаю, что я глуп.

rc = Mysql.new('CENSORED_HOST','username','password','db')
release = rc.query('select * from wp_ribcage_releases where release_id = 1 limit 1')

puts release["release_title"]

rc.close

И я получаю следующую ошибку:

ribcage-connect.rb:17: undefined method `[]' for #<Mysql::Result:0x1011ee900> (NoMethodError)

Я новичок в этом, и я уверен, что в основном делаю что-то очень глупое. Большое спасибо.

ИЗМЕНИТЬ

Добрые люди внизу получили меня, но дальше, теперь у меня есть:

rc = Mysql.new('server','user','pword','db')

release = rc.query('select * from wp_ribcage_releases where release_id = 1 limit 1')

row = release.fetch_row
puts row['release_title']

rc.close

И теперь я получаю сообщение об ошибке:

ribcage-connect.rb:12:in `[]': can't convert String into Integer (TypeError)
    from ribcage-connect.rb:12
Теги:
connection

2 ответа

2
Лучший ответ

rc.query(...) возвращает набор результатов, который вы можете выполнять итерацией. Вы не можете напрямую обращаться к нему.

Посмотрите:

http://www.kitebird.com/articles/ruby-mysql.html#TOC_7

Поскольку у вас есть только одна строка (из-за LIMIT 1), вы можете сделать:

row = release.fetch_hash
puts row['release_title']

Если у вас несколько строк:

while row = release.fetch_hash do
 puts row["release_title"]
end
  • 0
    Спасибо, что это так!
  • 0
    Я не получаю эту проблему - release = rc.query ('select * from wp_ribcage_releases, где release_id = 1 limit 1') release = release.fetch_row помещает release ['release_artist'] = не может преобразовать строку в целое число (TypeError) из ribcage -connect.rb: 12
Показать ещё 4 комментария
0

Эта ошибка означает, что вы не можете индексировать напрямую (используйте []) объект Result.

Вместо этого он должен быть (для этого случая с одной строкой):

row = release.fetch_hash
puts row["release_title"]

Для получения дополнительной информации: перейти сюда

  • 0
    Спасибо, я просто не читал достаточно сильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню