Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby on Rails:.constantize:常量名称错误?_Ruby On Rails_Ruby - Fatal编程技术网

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:-)