使用Ruby on Rails的Ajax简单视图刷新

我想知道是否有人可以帮助我解决我在Rails中制作一些AJAX的问题。 我想尝试做一些简单的事情,我只是想不断检查索引视图是否会在屏幕外显示新条目?

每隔几秒钟它就会很酷,新的条目会消失吗? 新条目位于名为image的div类中,其内部是:

 

我已经尝试了一些教程,但有些似乎已经过时了,我正想要实现的目标。 我希望有人可以帮助我朝着正确的方向前进。

基本思路是:

  1. 您存储以javascript可访问的某种方式加载的最新条目,例如在data-属性中
  2. 你有一个延迟循环ajax调用
  3. ajax调用的响应将在DOM中产生更改

1

查看(images / index.html.erb):

 <% render @images %> 

查看(images / _image.html.erb):

 
<%= image_tag image.image_url(:medium).to_s %>

2

使用Javascript:

 function poll(){ latest_id = $('div.image:first').data('id') $.getScript('/images?latest_id='+latest_id) } $(function(){setInterval(poll, 5000}) 

3

控制器:

 @images = Image.order('id desc') @images = @images.where('id > ?', params[:latest_id]) if params[:latest_id] 

查看(images / index.js.erb):

 $('div.image:first').before('<%=j render @images%>').hide().fadeIn() 

请注意,我对您的模型名称和路径做了一些假设。 您应该根据需要修改路径。

此示例仅用于说明目的,并不适用于实际应用程序 – 如果服务器过载,javascript将继续使用请求进行锤击,或者如果您的初始页面没有初始条目,则插入新条目的方式将会中断。