Ошибка Ruby: синтаксическая ошибка, неожиданный tGVAR, ожидание $ end - PullRequest
1 голос
/ 05 марта 2012

Я получаю ошибку Ruby: syntax error, unexpected tGVAR, expecting $end.

Я использую Mechanize для доступа к веб-сайту, а затем мне нужно ввести данные в форму для поиска. Когда я pp page сайт, чтобы получить форму информации, я получаю:

#<Mechanize::Form
<name nil>
<method "POST">
<action "">
<fields
...
...
[text:0xb43f9c type: text name: ct100$MainContent$txtNumber value: ]
...

Мой код, который выдает это:

Check_form = page.form()
Check_form.ct100$MainContent$txtNumber = 'J520518'

Любые идеи о том, что вызывает ошибку? Заранее спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 05 марта 2012

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

check_form = page.form
check_form['ct100$MainContent$txtNumber'] = 'J520518'

Переменные имеют форму @x для переменных экземпляра класса, @@x для переменных класса, $x для глобальных переменных и x для простых переменных, но во всех случаях переменная должна состоять из буквы или подчеркивания, за которыми следует любое количество букв, цифр или подчеркиваний.$ не может появляться нигде, кроме начала, и когда это происходит, это означает «глобальную переменную», что редко используется в большинстве программ на Ruby.

0 голосов
/ 06 марта 2012

Другой способ сделать это законным будет

Check_form.send(:"ct100$MainContent$txtNumber=", 'J520518')
0 голосов
/ 05 марта 2012

Ошибка говорит вам, что есть глобальная переменная, в которой Ruby ее не ожидает. И есть: $txtNumber - глобальная переменная, но не имеет смысла, чтобы глобальная переменная появлялась в этом месте в вашем коде.

...