从包含的文件中调用时,Ruby字符串插值不起作用

时间:2019-01-16 00:00:17

标签: ruby

我有两个文件:urls.rbtestcase.rburls.rb具有以下特点:

$event = "/sendmessage/#{id}"

URL中的idtestcase.rb中生成。这是testcase.rb中的代码:

require 'urls.rb'

id = 100
puts $event 

我看到以下错误:

undefined local variable or method `id' for main:Object (NameError)

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

问题是您试图在id定义之前在urls.rb中使用testcase.rb。您的代码在功能上等效于以下内容:

$event = "/sendmessage/#{id}"
id = 100
puts $event

这不起作用,因为您试图在定义之前调用id。您必须先定义变量:

id = 100
$event = "/sendmessage/#{id}"
puts $event

它在这里起作用,因为您已经定义了id ,然后再尝试调用它。

在解决此类问题时,请考虑如果不将其分为不同的文件,它将如何工作。

因此,在不了解您要完成的操作的更多信息之前,只需确保在尝试调用它之前定义了一个 变量即可。

答案 1 :(得分:1)

不能在文件之间调用id之类的局部变量。它们的范围限制在一个文件中。为了使用它,必须在使用的文件中分配id。此外,在要求id之后分配'urls.rb'是没有意义的。