2017-05-06 110 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'键或方法来调用。 –