5

在提交表单后,我发现了许多关于使用 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>

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

4

1 回答 1

4

原来答案有点复杂:

第 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

于 2012-08-03T18:31:26.197 回答