[jquery] Rails 4:将JSON对象(从AJAX响应)渲染到视图中


Answers

你必须$.parseJSON(data); 第一。

喜欢

 $.ajax({
    url:  "/users/select_users",
    dataType: "json",
    data: {
       prezzario: ui.item.value
    },
    success: function(data) { 
       var r = $.parseJSON(data);
       console.log(r.users)//This is where Your users are
    }
});
Question

我正在使用Rails 4,而且我对JSON对象还是比较陌生的。

我有一个控制器:

class UsersController < ApplicationController

 def select_users

   @users = User.all
   respond_to do |format|
     format.html
     format.js {} 
     format.json { 
        render json: {:users => @users}
     } 
   end
 end
end

和一个javascript users.js:

$.ajax({
    url:  "/users/select_users",
    dataType: "json",
    data: {
        prezzario: ui.item.value
    },
    success: function(data) { 
        $('#usersList').append(data.users);
    }
});

现在我想要在div中呈现这个用户集合,但我不知道如何。 在数据响应中,我在控制台中输入了正确的数据,像这样:

{"users":[{"_id":{"$oid":"536cf7b6b8dd181f4b7acf9f"},"children":[{"$oid":"536cf7b6b8dd181f4b7acfa0"},{"$oid":"536cf7b7b8dd181f4b7acfd1"}],"description":"Some description.","name":"My name","user_id":"1"},{...........}]}

我有一个部分/users/_users.html.erb与经典users.each和所有属性的打印。 如果我尝试

$('#usersList').append("<%= render 'users', :locals{ :users => "+data.users+"} %>");

我发现在#usersList <%= render 'users', :locals{ :users => undefined }%>

我想创建一个部分模板,并使用它来呈现用户。 我怎样才能做到这一点?






Related