2012-03-05 108 views
1

我得到红宝石错误:syntax error, unexpected tGVAR, expecting $end.

我使用机械化访问一个网站,然后我需要将数据输入到表格进行查询。当我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' 

是什么原因造成的错误任何想法?预先感谢您的帮助!

+0

@AlexKliuchnikau感谢您的编辑。在我能做到之前,你已经做到了。 – user1128637 2012-03-05 14:41:17

回答

0

由于这不是有效的变量或语法上有效的方法的名称,则应该使用另一种方法来获取或分配值:

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

变量的形式为@x的为类的实例变量,@@x为类变量,全局变量为$x,普通变量为x,但在任何情况下,变量都必须包含字母或下划线,后跟任意数量的字母,数字或下划线。 $不能出现在除开头以外的任何地方,而当它出现时,这意味着“全局变量”,这在大多数Ruby编程中很少使用。

+0

就是这样!它现在完美了!谢谢!!! – user1128637 2012-03-05 15:14:36

+0

作为附加说明,以大写字母开头的变量被声明为常量,这可能不是您在此想到的。 – tadman 2012-03-05 16:55:38

+0

我假设你是指我正在输入搜索框('J520518')的项目。因为这是一个搜索项目(价值),这无关紧要。如果您引用括号中的项目,那就超出了我的控制范围。我个人不会设计一个使用变量标识符作为表单名称的一部分的网站。现在我有一个新问题,我将作为一个新问题提交。 (这个网站是如此痛苦)。非常感谢您的帮助!!!干杯! – user1128637 2012-03-05 18:47:52

0

错误是告诉你,有一个全局变量,其中Ruby不期望。并且存在:$txtNumber是一个全局变量,但是在您的代码中出现在该位置的全局变量没有意义。

+0

问题是它不是全局变量,它是我试图设置值的区域的名称的一部分,因此我可以搜索。 – user1128637 2012-03-05 14:53:55

0

另一种方法,使之法律将

Check_form.send(:"ct100$MainContent$txtNumber=", 'J520518') 
相关问题