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

标签 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>

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

最佳答案

事实证明答案有点复杂:

第 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使用。

第五步:添加get '/latest'给您的 routes.rb

关于ajax - 使用 AJAX(不是表单)更新 Rails 3 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588251/

相关文章:

c# - 在 gridview 链接按钮上打开 ajax 模式弹出窗口

javascript - Sharepoint - REST API 查询字段的结果未定义

ruby-on-rails - 这可能是什么 : New Active Record chainable query language built on top of relational algebra?

ruby - 具有 respond_with destroy 操作的 Rails 嵌套资源

ruby-on-rails-3 - 使用Rails 3 where子句仅检索某些列

ruby-on-rails-3 - 如何开始测试?

ruby - 配置思维 sphinx 和飞行 sphinx 时出错

javascript - 在 Jquery AJAX 中使用复选框

javascript - ajax setTimeout 不适用于 json_encode

ajax - 等待 2 个 AJAX 请求完成(d3.js)并优化临时等待?