我有一个哈希,我正在使用正则表达式来选择我想要的键/值对。这是我写的方法:
def extract_gender_race_totals(gender, race)
totals = @data.select {|k,v| k.to_s.match(/(#{gender})(#{race})/)}
temp = 0
totals.each {|key, value| temp += value}
temp
end
哈希看起来像这样:
@data = {
:number_of_african_male_senior_managers=>2,
:number_of_coloured_male_senior_managers=>0,
:number_of_indian_male_senior_managers=>0,
:number_of_white_male_senior_managers=>0,
:number_of_african_female_senior_managers=>0,
:number_of_coloured_female_senior_managers=>0,
:number_of_indian_female_senior_managers=>0,
:number_of_white_female_senior_managers=>0,
:number_of_african_male_middle_managers=>2,
:number_of_coloured_male_middle_managers=>0,
:number_of_indian_male_middle_managers=>0,
:number_of_white_male_middle_managers=>0,
:number_of_african_female_middle_managers=>0,
:number_of_coloured_female_middle_managers=>0,
:number_of_indian_female_middle_managers=>0,
:number_of_white_female_middle_managers=>0,
:number_of_african_male_junior_managers=>0,
:number_of_coloured_male_junior_managers=>0,
:number_of_indian_male_junior_managers=>0,
:number_of_white_male_junior_managers=>0,
:number_of_african_female_junior_managers=>0,
:number_of_coloured_female_junior_managers=>0,
:number_of_indian_female_junior_managers=>0,
:number_of_white_female_junior_managers=>0
}
但它在 SQL 查询之后重新填充了数据。
我想这样做,以便密钥必须同时包含种族和性别,以便它返回一些东西。否则它必须返回 0。这是正确的还是正则表达式语法关闭?
它全部返回 0,这是不应该的。
所以这个例子是
%td.total_cell= @ee_demographics_presenter.extract_gender_race_totals("male","african")
这将返回 4,有 4 位非洲男性经理。