我正在尝试通过
初始化一个集合 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>):
过去几个小时我一直试图解决这个问题,但无济于事
答案 0 :(得分:3)
您在源代码中使用了错误的引号。检查"
和“
之间的区别。它们看起来很相似,但Ruby只使用第一种类型来表示字符串 - 第二种类型被解释为任何其他字符,所以ruby认为你试图在你的字符串中添加一个名为“_”
的变量,然后抛出这个错误告诉你它认为你试图使用的变量不存在。
如果您从其他地方(如教程网站)复制代码并将其粘贴到其中,通常会发生这种情况,因为有时会使用错误的字符来显示教程或其他内容。
如果您使用的编辑器主要不是为编写代码而有时会出现这种情况,因为其中一些编辑器会自动将"
替换为“
,最后”
替换为current_user.account.name + "_" + @form.form_name
,当你写报告的演讲时看起来很可爱,但打破了代码!
另一方面,一种更为红宝石的写作方式
"#{current_user.account.name}_#{@form.form_name}"
将使用字符串插值,如下所示:
'string' + 'string'
"
格式是完全有效的语法,但字符串插值通常更易读,更不容易出错,并由ruby style guide推荐。正如@sawa在下面指出的那样,它在使用的计算资源方面也更有效率。