Ruby Block Variable未在一行中定义错误,但适用于do..end块

时间:2017-10-31 09:38:25

标签: ruby rails-console pry

我不知道如何解释这一点,我愿意接受建议。

以下是一个例子:

User.last.orders.detect { |user_order| user_order.query.id == 107 }

这不起作用;

NameError: undefined local variable or method ` user_order' for main:Object
from (pry):51:in `block in <main>'

但这有效:

User.last.orders.detect do |user_order|
  user_order.query.id == 107
end

这只是一个简单的例子。我真的不明白为什么会这样。谢谢!

1 个答案:

答案 0 :(得分:2)

问题是管道和class Skill(models.Model): """[FR] Compétence A Skill can be evaluated through questions answered by a student. Thus, when evaluated, a Skill can be acquired by a student, or not. """ code = models.CharField(max_length=20, unique=True, db_index=True) """The Skill reference code""" name = models.CharField(max_length=255) """The Skill name""" description = models.CharField(max_length=255) 之间还有一个额外的“不间断空间”,这就是消息说明的原因:

  

NameError:未定义的局部变量或方法`user_order'for   主:对象

您的实际变量是“user_order”而不是“user_order”。

当同时按下 alt space (在OSX上)时,通常会发生这种情况,这在Ruby中为“内联”块打开花括号时很常见。