Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 得到一个;没有将字符串隐式转换为整数;显式转换为字符串时出错

Ruby on rails 得到一个;没有将字符串隐式转换为整数;显式转换为字符串时出错,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我得到了一个惊人的错误。我检查一条记录的ID是否与另一个对象的ID匹配: new_post = posts_with_score.detect {|post| post["id"].to_s == original_post.id.to_s } 我得到一个错误TypeError(没有将字符串隐式转换为整数)。这是令人惊讶的,因为两个id都显式地转换为字符串 我在这里看不到什么?为什么这个等式检查要转换成整数 编辑: 以下是detect内部的post看起来的样子:{“time\u sin\u p

我得到了一个惊人的错误。我检查一条记录的ID是否与另一个对象的ID匹配:

new_post = posts_with_score.detect {|post| post["id"].to_s == original_post.id.to_s }
我得到一个错误
TypeError(没有将字符串隐式转换为整数)
。这是令人惊讶的,因为两个id都显式地转换为字符串

我在这里看不到什么?为什么这个等式检查要转换成整数

编辑:


以下是detect内部的
post
看起来的样子:
{“time\u sin\u post\u in\u hours”=>15.810972532939815,“upvote\u count”=>324,“id”=>1,“score”=>4.3103601541380465}
由于散列的结构,当您迭代它时,post是一个数组。因此,当您发布[“id”]时,Ruby会尝试将索引(字符串)转换为整数。这就是你得到错误的时候。请注意,错误是“没有将字符串隐式转换为整数”,反之亦然。因此,请检查您的哈希结构,以根据需要进行调整

你确定你从这一行中得到了错误吗?是的,我们仔细检查了一下,它肯定指向某一特定函数中的这一行号。附近也没有其他检查或转换。如果将post.class放入块中会发生什么?我认为块中的
post
是一个数组。错误在于将字符串转换为整数,而不是相反。如果进行了编辑,请展开“检测”以使用多行。将一行作为
post['id']
,另一行作为
original\u post.id
,然后将您的条件作为最后一行。你应该能够找出问题的原因。我刚刚编辑了这个问题,因为我正在检查
Post
是否是一个数组,看起来
Post
仍然是一个哈希值。你介意将posts\u的内容与\u分数一起发布吗?