我有一个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