Jquery 从散列更新动态选择下拉列表值

Jquery 从散列更新动态选择下拉列表值,jquery,ruby-on-rails,Jquery,Ruby On Rails,我有一个像这样的大杂凑,有品牌和车型: makes_models={AM General:[Hummer],Acura:[CL,ILX,ILX Hybrid、Integra、Legend、MDX、NSX、RDX、RL、RLX、RSX、, SLX,TL,TLX,TSX,TSX运动车,活力,ZDX],阿尔法 罗密欧:[4C],阿斯顿马丁:[DB7,DB9,DBS,拉皮德,拉皮德 S、 V12征服,V12优势,V8优势,征服, 奥迪:[100200,80,90,A3,A3-e-tron,A4, A5、

我有一个像这样的大杂凑,有品牌和车型:

makes_models={AM General:[Hummer],Acura:[CL,ILX,ILX Hybrid、Integra、Legend、MDX、NSX、RDX、RL、RLX、RSX、, SLX,TL,TLX,TSX,TSX运动车,活力,ZDX],阿尔法 罗密欧:[4C],阿斯顿马丁:[DB7,DB9,DBS,拉皮德,拉皮德 S、 V12征服,V12优势,V8优势,征服, 奥迪:[100200,80,90,A3,A3-e-tron,A4, A5、A6、A7、A8、Cabriolet、Coupe、Q1、Q3、Q5、Q7、, R8,RS 4,RS 5,RS 6,RS 7,S3,S4,S5,S6,S7, S8,SQ5,TT,TT RS,TTS,V8,allroad,allroad quattro]}

我有一个select,可以让您选择模型的哈希键:

<%= vehicle.select(:make, options_for_select(["AM General", "Acura", ...] )) %>
我让jQuery根据选择的make更新模型选择:

$('select#quote_vehicles_make').change(function() {
    $.each(models[$(this).val()], function( idx, value ) {
      $('select#quote_vehicles_models').html("<option>" + value + "</option>");
    });
});
型号选择:

<select id="quote_vehicles_models">
  <option>...</option>
</select>
问题是select只返回makes\u models散列中的最后一个值。例如,如果我选择:Acura,那么模型选择updates,并且只显示:ZDX

如何修复这个jQuery? 它们是从散列生成动态选择框的简单rails/jQuery解决方案吗?
我解决了自己的问题:jQuery:

$('select#quote_vehicles_make').change(function() {
  $('select#quote_vehicles_models').empty();
    $.each(models[$(this).val()], function( idx, value ) {
      $('select#quote_vehicles_models').append("<option>" + value + "</option>");
    });
});

仍然对面向Rails的解决方案感兴趣(如果有的话)。谢谢。

请考虑以下数据结构:

def make
     {"AM General":["Hummer"], "Acura":["CL", "ILX", "ILX Hybrid", "Integra", "Legend", "MDX",
        "NSX", "RDX", "RL", "RLX", "RSX", "SLX", "TL", "TLX", "TSX", "TSX Sport Wagon", "Vigor", "
        ZDX"], "Alfa Romeo":["4C"], "Aston Martin":["DB7", "DB9", "DBS", "Rapide", "Rapide S", "V12
        Vanquish", "V12 Vantage", "V8 Vantage", "Vanquish", "Virage"], "Audi":["100", "200", "80", 
        "90", "A3", "A3 e-tron", "A4", "A5", "A6", "A7", "A8", "Cabriolet", "Coupe", "Q1", "Q3", 
        "Q5", "Q7", "R8", "RS 4", "RS 5", "RS 6", "RS 7", "S3", "S4", "S5", "S6", "S7", "S8", "SQ5",
        "TT", "TT RS", "TTS", "V8", "allroad", "allroad quattro"]}[model]
end
然后,您可以列出每辆车的型号,如:

make[@vehicle.model]
您也可以使用jquery实现这一点,只需将make函数定义为javascript函数,获取所选模型,并将其传递给make函数。输出将是该模型的make数组,然后您可以将其作为html选项传递给下一个选择框