比较数组中的索引值
comparing index values in an array
我有一个看起来像这样的数组
ranking_array = ['NC', '40', '30/5', '30/4', '30/3', '30/2', '30/1', '30', '15/5', '15/4', '15/3', '15/2', '15/1', '15', '5/6', '4/6', '3/6', '2/6', '1/6', '0', '-2/6', '-4/6', '-15', '-30']
我也有一个模型用户,我的用户有一个排名,它是一个包含在 ranking_array 中的值。
我有一个带有 max_ranking 和 min_ranking 的模型锦标赛,这两个值都包含在 ranking_array.
中
用户只能在
的情况下订阅锦标赛
tournament.min_ranking<=user.ranking <= tournament.max_ranking
我需要一种方法来比较排名的值(即 ranking_array 索引,因为 ranking_array 是从最低到最高排名排序的)
因此,我需要写下比较这些值索引的方法:
if current_user.ranking_index > tournament.max_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
elsif current_user.ranking_index < tournament.min_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
如何使用 each_with_index 实现?
如果你想得到排名的索引,只需要在ranking_array上调用.index即可。
ranking_array.index(current_user.ranking)
我想我理解您要实现的目标:您想确保玩家的排名介于最低和最高排名之间,但您仅将每个模型中的排名存储为字符串。排名数组按升序排列,但我不确定 #each_with_index 是否可行。另一个答案更干净。您还可以阅读有关 Rails 内置枚举 class 的内容,当新手或外部开发人员阅读它时,这将使它更清晰、更容易理解。
你的问题是关于如何用 each_with_index 做到这一点,所以像这样的东西就是你想要的。
ranking_array.each_with_index do |ranking, i|
return i if ranking == current_user.ranking
end
此外,您的两个警报都闪烁着相同的消息。如果这是故意的而不是拼写错误,您可以像这样组合您的 if 语句:
if current_user.ranking_index > tournament.max_ranking_index || current_user.ranking_index < tournament.min_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
end
我有一个看起来像这样的数组
ranking_array = ['NC', '40', '30/5', '30/4', '30/3', '30/2', '30/1', '30', '15/5', '15/4', '15/3', '15/2', '15/1', '15', '5/6', '4/6', '3/6', '2/6', '1/6', '0', '-2/6', '-4/6', '-15', '-30']
我也有一个模型用户,我的用户有一个排名,它是一个包含在 ranking_array 中的值。
我有一个带有 max_ranking 和 min_ranking 的模型锦标赛,这两个值都包含在 ranking_array.
中用户只能在
的情况下订阅锦标赛tournament.min_ranking<=user.ranking <= tournament.max_ranking
我需要一种方法来比较排名的值(即 ranking_array 索引,因为 ranking_array 是从最低到最高排名排序的)
因此,我需要写下比较这些值索引的方法:
if current_user.ranking_index > tournament.max_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
elsif current_user.ranking_index < tournament.min_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
如何使用 each_with_index 实现?
如果你想得到排名的索引,只需要在ranking_array上调用.index即可。
ranking_array.index(current_user.ranking)
我想我理解您要实现的目标:您想确保玩家的排名介于最低和最高排名之间,但您仅将每个模型中的排名存储为字符串。排名数组按升序排列,但我不确定 #each_with_index 是否可行。另一个答案更干净。您还可以阅读有关 Rails 内置枚举 class 的内容,当新手或外部开发人员阅读它时,这将使它更清晰、更容易理解。
你的问题是关于如何用 each_with_index 做到这一点,所以像这样的东西就是你想要的。
ranking_array.each_with_index do |ranking, i|
return i if ranking == current_user.ranking
end
此外,您的两个警报都闪烁着相同的消息。如果这是故意的而不是拼写错误,您可以像这样组合您的 if 语句:
if current_user.ranking_index > tournament.max_ranking_index || current_user.ranking_index < tournament.min_ranking_index
flash[:alert] = "Vous n'avez pas le classement requis pour vous inscrire dans ce tournoi"
end