2017-05-06 105 views
0

我有一個DB = Staff和一個collection =記錄的mongoDB。它包含一系列員工,其中一個字段是工作組,其中包含「管理」,「工會」,「支持人員」等項目。來自Mongo的動態下拉菜單

我想填充下拉列表中的值工作組字段,然後用它從下拉列表中選定的指定值中檢索所有記錄。

我正在使用Ruby,我可以檢索值(我可以在控制檯中看到它們),但它們不會填充下拉列表。

這是我的Ruby代碼:

get '/workgroup' do 
    Record.all.to_a.collect(&:workgroup).uniq.to_json 
end 

我在JavaScript的嘗試是:

<script> 
//var json = 'http://localhost:4567/api/v1/workgroup'; 

$(document).ready(function() 
{ 
    $.getJSON("/api/v1/workgroup",function(obj) 
    { 
     $.each(json.records,function(key,value) 
     { 
      var option = $('<option />').val(value.workgroup); 
     $("#dropDownDest").append(option); 
}) 
    }) 

     }); 

</script> 

一旦我得到在下拉列表中的信息,我想用它來返回所有記錄將該工作組值添加到表中。我還沒有想出那部分。一步一步來!

謝謝!

回答

1

在您的$.getJSON回電內您提到json.records,但沒有json變量或對象。

您傳遞給回調函數的參數是obj。我想你真的很想做$.each(obj, function(key, value)...

+0

謝謝!我認爲你在正確的軌道上。至少現在,當我點擊它時,下拉列表會展開,但其中仍然沒有數值。我查看了正在返回的數據,它似乎是一串字符串。它看起來像這樣 [「管理」,「聯盟」,「支持人員」] 這可能是導致問題,因爲它不是在一個嚴格的JSON鍵/值語法? – user2843365

+0

在你的ruby代碼中你調用'.collect(&:workgroup)',所以它只返回一個工作組列表。 –

+0

您應該在JavaScript中放置一個斷點,或者使用一些警報來查看'obj'值是什麼樣,以及'key'和'value'設置的是什麼。如果你只是用'obj'來替換'json.records',我不認爲它會解決它,因爲你仍然在執行'value.workgroup',但在這種情況下'value'只是一個字符串列表,沒有'workgroup'鍵或方法來調用。 –