ruby-on-rails - 用于更新表的Rails 3 AJAX解决方案?

标签 ruby-on-rails ajax ruby-on-rails-3

我知道这是一个受欢迎的话题,但是我一直在努力寻找答案,但是奇怪的是没有找到任何可以帮助您的东西...

我有一个基本的Rails 3应用程序,它在一个表中显示数据库条目。一个单独的应用程序将新条目发布到数据库中,我希望Rails应用程序可以轮询和刷新以显示新内容。现在,我有一个糟糕的javascript代码,只是重新加载了整个页面,事实证明这是我的障碍。我有一个搜索栏和多个检查栏,可删除多个项目,但是这些都在刷新页面时重置(再次,我知道这很糟糕并且严重损坏了)。

通过阅读,我得出结论,我应该使用AJAX来轮询数据库,并仅呈现比显示的最新条目新的数据库条目。如何精确执行这是另一回事了...

我发现的大多数教程都已过时,而且我无法使旧版代码运行。我对AJAX和Rails都是陌生的,如果有人有任何指导,建议,教程或个人批评(:P),它们可以为我指明正确的方向,我将很高兴。

谢谢!

编辑:我有新的条目被拉到页面中,但它们根本无法正确呈现。由于某些原因,它们没有作为条目添加到我的表中。这是我的代码,希望你们也许能够挑出我错过的东西:
*注意->请求实际上是我的数据库条目的名称。请求是模型。

views/requests/index.html.erb

    <table class="center">
<div id="requests">
 <tr>
    <th><%= sortable "Patient_Name", "Patient Name" %></th>
    <th><%= sortable "Room_Number", "Room Number" %></th>
    <th><%= sortable "Request" %></th>
    <th><%= sortable "Urgency" %></th>
    <th><%= sortable "count", "Request Count" %></th>
    <th><%= sortable "created_at", "Created At" %></th>
    <th></th>
  </tr>
<%= render @requests %>
</div>
</table>

请求部分:views/requests/_request.html.erb
 <div class="request" data-time="<%= request.created_at.to_i %>">
    <tr>
        <td><%= request.Patient_Name %></td>
        <td><%= request.Room_Number %></td>
        <td><%= request.Request %></td>
        <td><%= request.Urgency %></td>
        <td><%= request.count %></td>
        <td><%= request.created_at.getlocal.strftime("%r on %D") %></td>
        <td><%= link_to 'Remove', request, :confirm => 'Are you sure?', :method => :delete %></td>
    </tr>
</div>

View /请求/index.js.erb
$('#requests').append("<%=raw escape_javascript(render(@requests))%>");

最佳答案

这怎么样?

http://www.datatables.net/

另一整套在这里:

http://plugins.jquery.com/plugin-tags/ajax-table

有时,使用那里的东西比 build 新的东西更好。

但是要回答您的问题,这取决于您是自己操作DOM还是让Prototype,jQuery,MooTools或其他繁重的工作。这个想法是在Javascript中设置一个计时器,当计时器触发时,请向服务器请求更新。服务器-您的Rails应用程序-会将所有已更改的内容打包并发送回去。

步骤1:确定框架。我使用jQuery,但大多数都可以。

步骤2:确定数据格式。我使用JSON,但XML可以。

步骤3:设置计时器循环。它涉及使用settimer()并在每次观察后将其重置。

第4步:在计时器触发时执行的处理程序中,打包一个“最后一次看到”的时间戳,并发出Ajax请求。这样做的方式因框架而异-或如果要正确地对DOM进行编码,则应随浏览器的不同而不同。

步骤5:设置“成功”处理程序,以便当服务器返回零个或更多数据行时,可以在表中插入这些TR-TD-/TD-/TR行。

第6步:更新所有内部垃圾,例如数字计数器或行计数器,或者您的Javascript正在跟踪的其他任何东西。

注意:您可能会发现有其他人编写的插件可以很好地工作并为您节省麻烦,但是您应该对如何完成此工作有基本的了解。

关于ruby-on-rails - 用于更新表的Rails 3 AJAX解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773564/

相关文章:

ruby-on-rails - 在 Rails ActiveRecord 中,连接不适用于命名空间模型中的 has_and_belongs_to_many

ruby-on-rails - 减少 Heroku Bamboo 堆栈上的 slug 大小

javascript - Internet Explorer 7 Ajax 链接只加载一次

java - 使用 JBoss Richfaces 从 PDF 中提取文本

ajax - 使用 ajax 替换面板的 Wicket 因 MarkupNotFoundException 而失败

ruby-on-rails - 测试基于 Rails 环境构建的 API

css - rails : horizontally inline values from the ratyrate gem

javascript - 设置选择选项的默认值

ruby-on-rails - 挽救 Rails Controller 中的无效日期

ruby-on-rails-3 - 在 Rails 应用程序中使用什么来上传不同的文件格式(音频、视频)?