我有一个看起来像这样的数组
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实现这一目标?
答案 0 :(得分:3)
我想我理解你要实现的目标:你想确保玩家在最低和最高排名之间有排名,但你只将每个模型中的排名存储为字符串。排名数组按升序排列,但我不确定#each_with_index是否可行。另一个答案是更清洁。您还可以阅读有关Rails内置枚举类的信息,以便在新的或外部开发人员阅读时更清晰,更容易理解。
你的问题是关于如何使用each_with_index执行此操作,所以这样的事情就是你想要的。
$(":mobile-pagecontainer").pagecontainer("change", "#triggers", { transition: "slide" } );
此外,您的两个警报都闪烁相同的消息。如果这是故意的而不是拼写错误,你可以将if语句组合起来:
ranking_array.each_with_index do |ranking, i|
return i if ranking == current_user.ranking
end
答案 1 :(得分:2)
如果你想获得排名的索引,只需在ranking_array上调用.index。
ranking_array.index(current_user.ranking)