一尘不染

使用AJAX(不是表单)更新Rails 3部分

ajax

提交表单后,我发现了许多有关使用Ajax更新部分内容的问题和答案。但是我的问题是“更简单”,我只想每隔几秒钟重新加载一部分并加载新数据。这真的一点都不困难,我记得在Rails
2.3中做了类似的事情,但是我找不到任何答案。

基本上,我有一个show.html.erb渲染部分,像这样:

<div id="latest_post">
    <%= render :partial=>'info/latest', :object=>@user, :as=>:user %>
</div>

位于app / views / info / _latest的部分文件

<% post = user.posts.last %>
<h1>Last Post</h1>
<p><%= post.content %></p>

我只希望last_post div每30秒更新一次。请帮忙!


阅读 172

收藏
2020-07-26

共1个答案

一尘不染

好吧,答案很复杂:

第1步:使用Javascript setInterval函数和jQuery
$.get()函数加载页面,例如/users/1/posts/latest

setInterval(function(){
  $.get("/users/1/posts/latest.js", function(data){
    $("latest_post").html(data);
  },
  "html")
}, 30000);

第2步:创建一个latest.js.erb并将其放在您的app/views/posts文件夹中。

内容latest.js.erb

<%= render partial: 'posts/latest', object: @user.posts.last, as: :post %>

第3步:使用所需的内容创建上述的局部文件(如果不需要局部文件,则可以将div的全部内容写入latest.js.erb文件中。)

第4步:在中添加一个最新方法PostsController,该方法定义@user等等,latest.js.erb以供使用。

第5步:添加get '/latest'到您的routes.rb

2020-07-26