如何在jQuery AJAX中使用params调用Rails表单助手?(SUPER SIMPLE)

时间:2013-11-29 01:52:40

标签: javascript jquery ruby-on-rails ajax

我是Rails的新手,我认为这非常简单,只是不习惯语法。

这是jQuery的一部分,

$.ajax({
    type: "get",
    contentType: "application/json; charset=utf-8",
    url: "/users/search_users",
    data: {
        name: name
    },
    dataType: "text",
    success: function (result) {
        var test = "<%=get_user_list_html(result)%>";
        if (result == "User not found") {
            alert("User not found");
        } else {
            //console.log(result);
            var peopleData = jQuery.parseJSON(result);
            var resultHTML = "<tr>";
            resultHTML += "<th></th><th style='display:none'>User ID</th>" + "<th>First Name</th><th>Last Name</th><th>Email Address</th>" + "<th style='display:none'>Time Zone</th>";
            resultHTML += "</tr>";
            $.each(peopleData, function (index, obj) {

                resultHTML += "<tr>";
                resultHTML += "<td><input type='checkbox'></td>" + "<td style='display:none;'>" + obj.id + "</td>" + "<td>" + obj.firstname + "</td>" + "<td>" + obj.lastname + "</td>" + "<td>" + obj.email + "</td>" + "<td style='display:none;'>" + "Etc/GMT+9 (Japan)" + "</td>";
                //consider now
                resultHTML += "</tr>";
            });
            $("#internal_table").html(resultHTML);
        }
    },
    error: function () {
        window.alert("something wrong!");
    }
});

在这里,我打算调用帮助器中的get_user_list_html。

但我的问题是,如何使用来自respone的结果,我必须将其作为参数发送?

如果我这样说的话,那就是未定义的var。

2 个答案:

答案 0 :(得分:1)

Ruby代码必须在服务器端执行,这一行:var test = "<%=get_user_list_html(result)%>";在ajax调用后不起作用,它应该在.erb文件中。

您可以使用扩展名为.js.erb的ruby + javascript视图模板,但在文档加载之前始终会执行ruby代码。

我不知道帮助者做了什么,但这不是这样做的方法。

答案 1 :(得分:0)

解决方案1:从服务器渲染HTML部分而不是JSON。在你的情况下,这会让事情变得更容易。

解决方案2:使用模板呈现JSON响应,例如jQuery模板或Underscore模板。

您案例中的用法并不好。你错过了服务器端和客户端的更好部分。