我有一個Ruby on Rails應用程序。在users/home
被渲染後,它發送一個ajax調用到users#feed
。動作feed
執行查詢並將用戶列表發送到feed.js.erb
,我可以在其中混合使用javascript和erb來呈現頁面上的用戶。然而,爲了使代碼整潔,我想創建一個JavaScript函數,它將數據庫對象(用戶列表)作爲輸入並在頁面上呈現它們。這樣我也可以在其他頁面中使用此功能。什麼是最好的方式來做到這一點?是否有可能將activerecord數據庫對象轉換爲一些我可以輕鬆使用的javascript對象(做類似用戶[0] .name,用戶[2] .address等)的事情?一種方法是轉換爲json或字符串,但我可以很容易地從字符串中獲取信息(例如users [0] .name)。帶有activerecord輸入的javascript函數
這裏是feed.js.erb
部分代碼:
function showUsers() {
<% if @users.empty? %>
alert("no change");
<% else %>
<% @users.each do |user| %>
$("#<%= j user.id %>").html("<%= j user.name %>");
<% end %>
<% end %>
}
showUsers();
感謝。
謝謝,這就是我一直在尋找。因此,如果我使用JSON.parse()並定義'def function showUsers(u){...}'我可以在函數中用'u [0] .name'訪問第一個用戶的名字嗎? – user2725109
我很困惑......'def function'?我以爲你想在javascript上使用它... –
對不起,錯字。我的意思是我用'function showUsers(u){...}'定義了一個函數,然後調用它''showUsers(JSON.parse(<%= @ users.to_json%>))''。我的問題是在定義javascript函數時訪問不同用戶的正確語法是什麼?它是否像'u [0] .name'來訪問第一個用戶的名字? – user2725109