[英]Rendering a ruby object through jQuery from a returned JSON object
我不知道這是否是正確的方法,但我想按照標題所說的去做。 我缺少一些jQuery概念,因為它是我的新手。
我使用jQuery.rest: https://github.com/lyconic/jquery.rest
該腳本會定期檢查聯機和脫機用戶是否已更新:
<!-- Online checker -->
<script type="text/javascript">
$(function(){
setInterval (checkTrackings, 5000);
var js = '<checkTrackings> ';
function checkTrackings(){
$.read(
'/users/{id}/check',
{ id: <%= @user.id.to_json %> },
function (response) {
$("ul#online").empty();
$("ul#offline").empty();
// Code to add users back to list
$("ul#online").html('<%= escape_javascript(render(@online_users)).html_safe %>')
$("ul#offline").html('<%= escape_javascript(render(@offline_users)).html_safe %>')
console.log(js + 'Check trackings');
}
);
}
});
</script>
但是,除了返回@online_users和@offline_users外,我還需要返回的JSON對象並將其轉換為上述變量。 該腳本調用的方法在這里:
# Updates contacts
def check
@online_users = Array.new
@offline_users = Array.new
@user = User.find(params[:id])
@followed_users = @user.followed_users
@followed_users.each do |followed_user|
@online_users.push(followed_user) if followed_user.state.online
end
@offline_users = @followed_users - @online_users
respond_to do |format|
format.js { render :json => { :online_users => @online_users, :offline_users => @offline_users } }
end
end
任何其他技巧也將是不錯的。 我是Web開發人員的新手。 謝謝您的幫助!
您是否嘗試過記錄響應
function (response) {...}
您的響應應該分別具有response.online_users和response.offline_users對象,因此請記錄為:
function (response) {
console.log(response.online_users, response.offline_users);
...
}
看看您的響應是否包含您的json對象?
因此,如果您有response.online_users,則需要在javascript中執行此操作:
// Code to add users back to list
var online_users = response.online_users,
online_users_len = online_users.length,
buffer = [];
for(var i = 0; i < online_users_len; i++) {
buffer.push("<li>", online_users[i], "</li>");
}
$("ul#online").html(buffer.join(""));
// Put the offline user count in ul#offline
$("ul#offline").html(response.offline_users);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.