在rails中渲染json数组

时间:2012-11-03 05:58:35

标签: jquery ruby-on-rails-3.1

我在控制器中的代码如下所示:

def dashboard
    @proj_users.each do |us|
      @users<<User.find(us.user_id).email
    end
    render :json=>@users
end

在我的视图页面中,javascript看起来像这样:

$(".clicked").click(function () {
  $.get("/dashboard", {
      clicked_id:this.id,
      user:$("#user").val()
    },
    function (data) {
      $("#all_users").hide();
      $("#proj_users").html(data);
    });
});

@users是一个包含电子邮件ID的数组。正如您所见,data@users

@users将是这样的 tm@gmail.com,tm2@gmail.com

$("#proj_users").html(data);未获得数据更新..

请帮帮我......

2 个答案:

答案 0 :(得分:1)

two ways

1)解决方案1 ​​

  @proj_users.each do |us|
     email  = User.find(us.user_id).email + "<br>"
     @users << email
   end
   render :text=>@users

2)解决方案2

  @proj_users.each do |us|
     @users<<User.find(us.user_id).email
   end
   render :json=>@users

   in view

   $(".clicked").click(function(){
        $.get("/dashboard",{
        clicked_id:this.id,
        user:$("#user").val()
        },
        function(data)
        {
         $("#all_users").hide();
         $.each(data, function(email){
           $("#proj_users").append(email + "<br>");
         }
        });
   });

答案 1 :(得分:1)

您可以简化迭代:

def dashboard
  render :json => @proj_users.map(&:email)
end

现在你需要在前端迭代(使用.each()方法)并将其放在你的html中,如@ ubaid的回调函数所示。