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