我是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。
答案 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模板。
您案例中的用法并不好。你错过了服务器端和客户端的更好部分。