2012-08-05 39 views
0

我试图更新基于另一个选择框的工作..试图让jQuery的与Rails的动态选择形式和主动管理

在我的主动管理资源,我做了以下只是一些测试数据:

controller do 

    def getcols 
    list = new Hash 
    list = {"OPTION1" => "OPTION1", "OPTION2" => "OPTION2"} 
    list.to_json 
    end 
end 

在active_admin.js我有以下

$('#worksheet_type').change(function() { 

    $.post("/admin/getmanifestcols/", { ws_type: $(this).val() }, function(data) { 
      populateDropdown($("#column_0"), data); 
     }); 
}); 

function populateDropdown(select, data) { 
 select.html(''); 
    alert('hi'); 
    $.each(data, function(id, option) { 
     select.append($('<option></option>').val(option.value).html(option.name)); 
    });       
} 

以上在这个意义上是工作,当我的首要选择框发生变化时,jQuery是所谓的,我甚至得到'hi'的警报框被调用。但是,它并没有用我的测试OPTION1和OPTION2数据替换选择框的内容。

我想我传错了JSON或其他东西,或者它没有被读取。

我在想什么?

+0

让控制器渲染一个partial会更快,然后populateDropdown会追加返回html,而不是让JS和浏览器内存完成所有工作。 – 2012-08-05 17:16:46

+0

也使用populateDropdown函数内的console.log(data)来读取您在浏览器控制台中返回的javascript对象。 – 2012-08-05 17:18:08

回答

0

它看起来好像你没有正确地遍历地图。

什么:

$.each(data, function(value, name) { 
    select.append($('<option></option>').val(value).html(name)); 
});