Ruby SQL: неопределенный метод `[] ' - PullRequest
0 голосов
/ 07 сентября 2010

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

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

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

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 голосов
/ 07 сентября 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...