问题描述
我发现了一些关于提交表单后更新使用Ajax局部的问题和答案。但我的问题是?简单?我只是想重装部分每隔几秒钟和负载在新的数据。这实在不能硬可言,我记得在做类似的事情在Rails的2.3,但我无法找到答案的任何地方。
I found a number of questions and answers regarding updating a partial using Ajax after submitting a form. But my question is ?simpler?, I just want to reload a partial every few seconds and load in the new data. This really can't be hard at all, and I remember doing something similar in Rails 2.3 but I can't find the answer anywhere.
基本上,我有一个show.html.erb渲染的部分,像这样:
Basically, I have a show.html.erb rendering a partial like so:
<div id="latest_post">
<%= render :partial=>'info/latest', :object=>@user, :as=>:user %>
</div>
位于应用程序/视图/信息的部分文件/ _latest
The partial file located at app/views/info/_latest
<% post = user.posts.last %>
<h1>Last Post</h1>
<p><%= post.content %></p>
我只想latest_post div来进行每30秒更新一次。请帮帮忙!
I just want the latest_post div to be updated every 30 seconds. Please help!
推荐答案
那么事实证明,答案是一个有点复杂:
Well it turns out the answer is a little complicated:
第1步:使用JavaScript的的setInterval
随着jQuery的 $得到()
功能函数加载一个页面,说 /用户/ 1 /职位/最新
。
Step 1: Use Javascript's setInterval
function along with jQuery's $.get()
function to load a page, say /users/1/posts/latest
.
setInterval(function(){
$.get("/users/1/posts/latest.js", function(data){
$("latest_post").html(data);
},
"html")
}, 30000);
第2步:创建一个 latest.js.erb
键,把它放在你的应用程序/视图/帖
文件夹
Step 2: Create a latest.js.erb
and put it in your app/views/posts
folder.
目录 latest.js.erb
:
<%= render partial: 'posts/latest', object: @user.posts.last, as: :post %>
第3步:创建上述部分与任何你想(如果你不需要的部分,你可以只写div的全部内容在 latest.js.erb
文件。)
第4步:添加最新的方法,你的 PostsController
,它定义 @user
等为 latest.js.erb
来使用。
Step 4: Add a latest method to your PostsController
, that defines @user
, etc. for the latest.js.erb
to use.
第五步:添加得到'/最新的
您 routes.rb中
这篇关于更新一个Rails 3部分使用AJAX(而不是形式)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!