从ajax调用返回的数据更改options_for_select

时间:2014-03-25 21:32:31

标签: jquery ruby-on-rails ruby-on-rails-4

我正在尝试编写一个函数来在用户创建新供应商后更改我的options_for_select标记(针对用户的供应商):

$("#newVendor-from-inventory-form").on("ajax:success", function(xhr, data, status) {
  var newOptions = data;
  var $el = $("#inventory_vendor_id");
  $el.empty(); // remove old options
  _.each(newOptions, function(key, value) {
     $el.append($("<option></option>").attr("value", value).text(key));
  });
});

以下是newOptionsdata

中存储内容的示例
[["Test",1],["New Vendor",18],["2",19],["1",20],["asdf",21],["fd",22],["adf",23]] 

现在的问题是,当我遍历newOptions时,它正在迭代newOptions,好像它是一个字符串。所以,如果我console.log(key),我会得到每个角色。我希望我的密钥成为第一个值(例如&#34; Test&#34;或&#34; New Vendor&#34;)以及要返回的id(例如1或18)。

如何正确更改options_for_select代码的选项?我假设可能有一种更简单的方法。

2 个答案:

答案 0 :(得分:0)

我不擅长jquery,但这是我的解决方案

for( var i = 0; i < newOptions.length; i++ ) {
   $("#inventory_vendor_id").append( $('<option value="'+ newOptions[i][0] +'">'+ newOptions[i][1] +'</option>') );
}

答案 1 :(得分:0)

我明白了。在rails表单中,我只需要将html: {:'data-type' => 'json'}传递给数据类型,将其解释为json而不是字符串