0
我不知道這是否是正確的方法,但我想要完全按照標題的說法進行操作。我錯過了一些jQuery概念,因爲我是新手。通過jQuery從返回的JSON對象呈現ruby對象
我使用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 dev非常陌生。謝謝您的幫助!
真棒,這是在測試我只是做了。當沒有用戶在線時,'response.online_users'爲空,當1個用戶在線時變爲[object Object]。所以我得到了json,但是我如何將它們轉換回ruby?謝謝。 –
你是否想將它轉換回可以傳回給操作的東西?讓他們從前端轉換回紅寶石的應用程序有什麼用? – chaseadamsio
我已經有一種方法來呈現紅寶石對象。所以我想用這個代碼:$(「ul#online」)。html('<%= escape_javascript(render(@online_users))。html_safe%>'),其中@online_users從response.online_users更新。這是朋友列表及其在線狀態的定期更新。 –