Ruby 一行中的块变量未定义错误,但适用于 do..end 块
Ruby Block Variable not defined error in one line, but works on do..end block
我不知道如何解释更多,我愿意接受建议。
这是一个例子:
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
这只是一个简单的例子。我真的不明白为什么会这样。谢谢!
问题是您在管道和 user_order
之间有一个额外的 "non-breaking space",这就是消息显示的原因:
NameError: undefined local variable or method ` user_order' for
main:Object
您的实际变量是“user_order”而不是"user_order"。
这通常发生在同时按下 alt 和 space 时(在 OSX 上),在 Ruby.
中为 "inline" 块打开花括号时很常见
我不知道如何解释更多,我愿意接受建议。
这是一个例子:
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
这只是一个简单的例子。我真的不明白为什么会这样。谢谢!
问题是您在管道和 user_order
之间有一个额外的 "non-breaking space",这就是消息显示的原因:
NameError: undefined local variable or method ` user_order' for main:Object
您的实际变量是“user_order”而不是"user_order"。
这通常发生在同时按下 alt 和 space 时(在 OSX 上),在 Ruby.
中为 "inline" 块打开花括号时很常见