得到一个NameError(未定义的局部变量或方法`“_”“)
问题描述:
我想初始化集合通过得到一个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>):
我一直在试图弄清楚这一点在过去的几个小时,但无济于事
答
您使用的是一种错误的引号的源代码。检查"
和“
之间的差异。他们看起来很相似,但Ruby只使用第一种类型来表示一个字符串 - 第二种类型像任何其他字符一样被解释,所以ruby认为你试图向字符串中添加一个名为“_”
的变量,然后抛出这个错误,告诉你它认为你试图使用的变量不存在。
如果您从其他地方(如教程网站)复制代码并粘贴它,经常会发生这种情况,因为有时会使用错误的字符来显示教程或任何内容。
它有时也谈到有关,如果你使用的是不是主要设计用来编写代码的编辑,因为他们中的一些自动“
在开始和”
末,当你写报道的讲话,看起来可爱更换"
,但破坏代码!
在一个侧面说明,写
current_user.account.name + "_" + @form.form_name
是使用串插,像这样的一个更红宝石十岁上下的方式:
"#{current_user.account.name}_#{@form.form_name}"
的'string' + 'string'
格式是完全有效的语法,但字符串插值通常更具可读性,不易出错,并由ruby style guide推荐。正如@sawa指出的那样,它在使用的计算资源方面也更加高效。
它也更经济。带'+'的那个创建时间子字符串,然后立即丢弃。 – sawa