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

时间:2012-07-20 23:42:07

标签: ajax ruby-on-rails-3

我在提交表单后发现了一些关于使用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 个答案:

答案 0 :(得分: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:使用您想要的任何内容创建上述部分(如果您不需要部分,则可以在latest.js.erb文件中写入div的全部内容。)

第4步:向PostsController添加最新方法,定义@user等,以便latest.js.erb使用。

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