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 如何在rails中将哈希键与整数进行比较_Ruby - Fatal编程技术网

Ruby 如何在rails中将哈希键与整数进行比较

Ruby 如何在rails中将哈希键与整数进行比较,ruby,Ruby,这里,我比较数组值和散列键。但散列键是字符串,数组是整数——这就是为什么我无法比较两者的原因 有什么解决办法吗?如果有问题,您想打电话给我 params[:mg_question_id].each do |question| @poll=MgPollData.new @poll.mg_question_id= question params[:options_id].each do |k,v| if k==question

这里,我比较数组值和散列键。但散列键是字符串,数组是整数——这就是为什么我无法比较两者的原因


有什么解决办法吗?

如果有问题,您想打电话给我

params[:mg_question_id].each do |question|

    @poll=MgPollData.new

    @poll.mg_question_id= question

    params[:options_id].each do |k,v|

        if k==question
            @poll.answer= v
        end

    end

    @poll_answers.save

end

结束

正如其他人建议的那样,您可以打电话询问

params[:mg_question_id].each do |question_id|

   @poll=MgPollData.build(:mg_question_id => question_id.to_i)

   params[:options_id].each do |k,v|

      if k.to_i==question_id.to_i
        @poll.answer= v
      end

   end

   @poll_answers.save
但是,重要的是要记住,数组从0开始是基于索引的。而散列是基于对象的,散列键通常是符号
key:“Value”
,如果该键是一个符号,例如,
:key
调用
。to_i
可能会引发错误,或者在早期的ruby版本中会产生意外的副作用,例如:

返回一个整数,该整数对于程序特定执行中的每个符号都是唯一的。类似于
object\u id

  params[:mg_question_id].each do |question_id|

   @poll=MgPollData.build(:mg_question_id => question_id.to_i)

   params[:options_id].each do |k,v|

      if k.to_i==question_id.to_i
        @poll.answer= v
      end

   end

   @poll_answers.save
因此,我可能会调用
。\u s
,而不是
。\u I
选择将它们都作为字符串,并避免将符号转换为整数的问题


希望这对你有所帮助

如果使用字符串(数值)作为散列键,则可以使用key.to_i将键转换为整数值。是的……这是正确的。我以为数组值只是整数。所以我没有把它们转换成整数。这是我犯的错误谢谢@Tyler。这真的很有意义,你发现它很有用,祝你的项目好运!
:fred.to_i           #=> 9809