2017-08-04 86 views
1

我想初始化集合通过得到一个NameError(未定义的局部变量或方法`“_”“)

c = Collection.new(name: current_user.account.name + "_" + @form.form_name, description: @form.form_name,account: @form.account, data_types: columns, formats: columns) 

的事情是,这个本地工作,但对生产我得到这个错误

NameError (undefined local variable or method `“_”' for #<FormsController:0x0000001007a890>): 

我一直在试图弄清楚这一点在过去的几个小时,但无济于事

回答

3

您使用的是一种错误的引号的源代码。检查"之间的差异。他们看起来很相似,但Ruby只使用第一种类型来表示一个字符串 - 第二种类型像任何其他字符一样被解释,所以ruby认为你试图向字符串中添加一个名为“_”的变量,然后抛出这个错误,告诉你它认为你试图使用的变量不存在。

如果您从其他地方(如教程网站)复制代码并粘贴它,经常会发生这种情况,因为有时会使用错误的字符来显示教程或任何内容。

它有时也谈到有关,如果你使用的是不是主要设计用来编写代码的编辑,因为他们中的一些自动在开始和末,当你写报道的讲话,看起来可爱更换" ,但破坏代码!


在一个侧面说明,写

current_user.account.name + "_" + @form.form_name 

是使用串插,像这样的一个更红宝石十岁上下的方式:

"#{current_user.account.name}_#{@form.form_name}" 

'string' + 'string'格式是完全有效的语法,但字符串插值通常更具可读性,不易出错,并由ruby style guide推荐。正如@sawa指出的那样,它在使用的计算资源方面也更加高效。

+2

它也更经济。带'+'的那个创建时间子字符串,然后立即丢弃。 – sawa

相关问题