Ruby on rails Ruby on Rails:.constantize:常量名称错误?
我用这个:Ruby on rails Ruby on Rails:.constantize:常量名称错误?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我用这个: 4.times { |i| assert_not_equal("content#{i + 2}".constantize, object.first_content) } 我以前声明过局部变量 content1 content2 content3 content4 content5 我得到的错误 NameError: wrong constant name content2 这个错误是什么意思?我很确定我想要的是content2=\你必须用一个大字来调用ruby常量: Cont
4.times { |i| assert_not_equal("content#{i + 2}".constantize, object.first_content) }
我以前声明过局部变量
content1
content2
content3
content4
content5
我得到的错误
NameError: wrong constant name content2
这个错误是什么意思?我很确定我想要的是content2=\你必须用一个大字来调用ruby常量:
Content2
而不是Content2
常量名称以大写字母开头,后跟名称字符。类名和模块名是常量,并遵循常量命名约定。按照惯例,常量变量通常使用大写字母和下划线拼写
但是应该注意的是,没有常量变量,只有常量值。你能不能请用户评估一下(“content{i+2}”)
但请注意,评估是危险的:-)很有趣。有没有类似的方法来保护套管?为了删除评论,我一直误解你的问题,比如。。。现在它正在把我给它的字符串大写。所以,目前,.constantize将“hello”转换为hello。有什么能把“你好”变成“你好”的吗。(保留大小写)如果您想要变量的值,可以使用eval(但当然要小心),当使用eval时,我们可能会这样做:eval(user.name)。如果用户输入了“system('rm-rf/”),我们可能会删除文件系统。在运行该命令之前,系统不会请求权限吗?如果user.name返回user.destroy\u all:-)