Я ожидаю, что этот код для вставки четыре переменные (которые содержат только числовые символы) в таблицу в SQLite базе данных:Проблема с переменными Руби
on :"1" do |m|
local = m.params[1]
local_max = m.params[2]
end
on :"2" do |m|
global = m.params[1]
global_max = p m.params[2]
db.execute("insert into t (local, local_max, global, global_max) values(#{local}, #{local_max}, #{global}, #{global_max})")
end
, но вместо этого, он создает некоторые ошибки:
> [2016/01/07 20:43:09.662] !! bot.rb:88:in `block (4 levels) in
> <main>': undefined local variable or method `local' for
> #<Cinch::Callback:0x00000000c4fe00 @bot=#<Bot nick="cinch">> (NameError)
Вы уверены, что хотите, чтобы строка 'db.execute' внутри блока, а не снаружи? –
Да, я знаю, потому что я знаю, что в блоке установлены все 4 переменные. – user5603796
Я не знаю, что делает 'on..', но это будет работать, только если эти блоки' on' имеют одну и ту же область. В противном случае у вас есть адекватная ошибка: вы не можете получить доступ к локальным переменным за пределами их определения. –