Reputation: 41844
I have this in my controller:
def selectmodels
@brand = Brand.find_by_name(params[:brand_name])
@models = Model.where(:brand_id => @brand.id)
render json: @models
end
The returned code is processed by:
$.ajax({
url: '/selectmodels?brand_name=' + test, type: 'get',
dataType: 'json',
processData: false,
success: function(data) {
if (data == "record_not_found") {
alert("Record not found");
}
else {
alert(data);
$('#style_model_name').autocomplete({ source: data });
}
}
});
I would like to have the "data" keys and values loaded up into my autocomplete text-field.
Thanks!
UPDATE:
I receive the following:
[{"brand_id":1,"created_at":"2012-04-09T03:12:43Z","id":1,"name":"x","updated_at":"2012-04-09T03:12:43Z"},{"brand_id":1,"created_at":"2012-04-09T03:15:54Z","id":2,"name":"y","updated_at":"2012-04-09T03:15:54Z"},{"brand_id":1,"created_at":"2012-04-09T09:33:59Z","id":5,"name":"z","updated_at":"2012-04-09T09:33:59Z"}]
Upvotes: 1
Views: 1402
Reputation: 27227
$.ajax({
url: '/selectmodels?brand_name=' + test, type: 'get',
dataType: 'json',
processData: false,
success: function(data) {
if (data == "record_not_found") {
alert("Record not found");
}
else {
var source = [];
for (i in data) {
for (k in data[i]) {
source.push(data[i][k]);
}
}
$('#style_model_name').autocomplete({ source: source });
}
}
});
Or if you only want certain fields:
$.ajax({
url: '/selectmodels?brand_name=' + test, type: 'get',
dataType: 'json',
processData: false,
success: function(data) {
if (data == "record_not_found") {
alert("Record not found");
}
else {
var source = [];
for (i in data) {
source.push(data[i]['name']);
source.push(data[i]['id']);
source.push(data[i]['brand_id']);
}
$('#style_model_name').autocomplete({ source: source });
}
}
});
Upvotes: 2