2011-12-29 69 views
0

我有一個紅寶石哈希,其中包含汽車製造商和型號後面跟着一年。 它看起來像:使用jQuery填充紅寶石哈希中的選擇列表選項

makes_a={"saturn"=>{"sky"=>["2007", "2009", "2008"], "l-series"=>["2004", "2000", "2005", "2003", "2001", "2002"]}} 

我想填充3名選擇列表1)使2)模型和3)年 當一個汽車品牌的選擇(土星),第二個列表應該得到填充 的2種型號(天空和L系列)。'

當選擇特定模型(天空)時,應該使用年份選項填充第3個選擇列表。

我使用下面的代碼片段的軌道填充第一選擇列表:

<%= select_tag "make-select", options_for_select(@all_makes_models.to_hash.keys.sort, params[:make]), :class=>"car-make-select" %> 

我不知道如何使用jQuery訪問紅寶石哈希值。

試圖訪問像下面的紅寶石哈希給我javascript的語法錯誤。

$('#make-select').change(function() 
{  
    make = $(this).attr('value'); 
    models = '<%= @all_makes_models[" + make + "].to_hash.keys %>'; 
    alert(models); 
    $('#car-models').val(models); 
}); 

有關如何訪問哈希在JavaScript中的任何想法? (不js.erb)

感謝

回答

-1

This post爲我解決了這個問題。

就像你,我沒有使用數據庫中的數據。只要忽略查詢的控制器行並將params [:id]傳遞給partial。這個解決方案還可以讓您將數據從您的散列(我寧願使用已經排序的數組)傳輸到數據庫,並儘可能少地修改代碼,以免將來您的應用程序變得更加複雜。

1

如何作爲一個JSON對象分配所有的品牌和型號的「模型」 javascript變量?每次選擇列表更改時,都可以遍歷數據並重新填充表單元素。

<script type="text/javascript"> 
    var models = <%= @all_makes_models.to_json %>; 

    $(document).ready(function() { 
     $(".car-selector").change(function() { 
      // Traverse JSON object, repopulate select lists. 
     }); 
    }); 
</script> 

如果您不想在默認情況下呈現在你看來如此多的數據,你可以使用相同的概念,而是通過提交部分完成的形式通過AJAX獲取JSON數據。