在提交表单后,我发现了一些关于使用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秒更新一次.请帮忙!
解决方法
事实证明答案有点复杂:
第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步:使用您想要的任何内容创建上述部分(如果您不需要部分,则可以在latest.js.erb文件中写入div的全部内容.)
步骤4:向PostsController添加最新方法,为最新的.js.erb定义@user等.
第5步:在您的routes.rb中添加get’/ latest’