我发现了一些关于提交表单后使用 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 步:使用 JavascriptsetInterval
与 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
folder.
内容latest.js.erb
:
<%= render partial: 'posts/latest', object: @user.posts.last, as: :post %>
步骤 3:使用您想要的任何内容创建上述部分(如果您不需要部分,您可以将 div 的全部内容写入latest.js.erb
file.)
第 4 步:将最新方法添加到您的PostsController
,这定义了@user
等对于latest.js.erb
使用。
第5步:添加get '/latest'
给你的routes.rb
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)