RoR召回功能无需刷新

时间:2015-04-21 14:36:44

标签: javascript ruby-on-rails ajax twitter

当我生成我的观点时,我会从twitter中检索一条推文列表:

# Print tweets from list_id
<% @twitter_client.list_timeline(list_id).each do |tweet| %>
  <%= tweet.text %>
  <br />
<% end %>

此结果为静态,您只会获得此列表的最后20条推文。但我想让它每分钟自动刷新一次。如何在不刷新整个页面的情况下重新调用它?

我考虑过Ajax,但是这是一个由rails生成的视图,所以Ajax如何只召回这个特定的函数?

感谢您的建议

1 个答案:

答案 0 :(得分:2)

Ajax通常会发出请求,然后使用结果更新页面的部分。它可以向您的rails应用程序发出请求,该应用程序可以依次向twitter发出请求,获取一些数据,生成一大块html,然后将其作为对ajax查询的响应的一部分发回。

所以,它就像这样

浏览器javascript

  • 向等待响应的/ twitter_clients / 123发出ajax请求

Rails服务器:

  • 获取&#34; / twitter_clients / 123&#34;的请求它获取路由到例如twitter_clients#show
  • twitter_clients #show action加载必要的数据以进行twitter api调用,制作,然后获取一些数据。
  • 在show动作的format.js处理程序中,替换div,例如id&#34; twitter_feed&#34;使用部分&#34; twitter_clients / feed&#34;。

(实际上,控制器使用该数据来构建一块html使用该部分,然后将其发送回ajax请求(耐心地等待它),告诉请求&#34;取这个部分文本并使用它来替换id为#34; twitter_feed&#34;的div的内容。)

返回浏览器:

  • ajax响应返回,javascript将#twitter_feed div替换为响应内容。