我正在尝试编写一个函数来在用户创建新供应商后更改我的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));
});
});
以下是newOptions
或data
:
[["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
代码的选项?我假设可能有一种更简单的方法。
答案 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而不是字符串