Интерполяция строки Ruby не работает при вызове из включенного файла - PullRequest
0 голосов
/ 16 января 2019

У меня есть два файла: urls.rb и testcase.rb. urls.rb имеет следующее:

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

id в URL генерируется в testcase.rb. Это код в testcase.rb:

require 'urls.rb'

id = 100
puts $event 

Я вижу следующую ошибку:

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

Как мне устранить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Локальные переменные, такие как id, не могут быть вызваны для разных файлов. Их области ограничены в файле. Чтобы использовать его, вы должны назначить id в том же файле, в котором он используется. Кроме того, ваше назначение id после запроса 'urls.rb' не имеет смысла.

0 голосов
/ 16 января 2019

Проблема в том, что вы пытаетесь использовать id в urls.rb до того, как оно будет определено testcase.rb. Ваш код функционально эквивалентен следующему:

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

Это не работает, потому что вы пытаетесь вызвать id до того, как оно будет определено. Сначала вы должны определить переменную:

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

Здесь это работает, потому что вы определили id до , который вы пытаетесь вызвать.

При устранении неполадок, подобных этой, подумайте, как она должна работать, если вы не разделяете ее на разные файлы.

Так что, не зная больше о том, что вы пытаетесь достичь, просто убедитесь, что вы определили переменную до того, как попытаетесь ее вызвать.

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