获取NameError(未定义的局部变量或方法“”_“')

时间:2017-08-04 11:00:41

标签: ruby ruby-on-rails-3

我正在尝试通过

初始化一个集合
 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>):

过去几个小时我一直试图解决这个问题,但无济于事

1 个答案:

答案 0 :(得分:3)

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

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

如果您使用的编辑器主要不是为编写代码而有时会出现这种情况,因为其中一些编辑器会自动将"替换为,最后替换为current_user.account.name + "_" + @form.form_name ,当你写报告的演讲时看起来很可爱,但打破了代码!

另一方面,一种更为红宝石的写作方式

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

将使用字符串插值,如下所示:

'string' + 'string'

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