ActiveAdmin AJAX autorefreshing partial

时间:2014-05-28 11:03:12

标签: ajax activeadmin reload renderpartial

我只有一个简单的索引页面,显示ActiveRecord的所有项目。 我想要的是包含项目的表每X秒自动刷新一次(即从DB加载并呈现)。 我已经将索引操作重新定义为部分渲染

[app/admin/item.rb]
ActiveAdmin.register Item do
   index do   
      render :partial => "items_list"
   end
end

然后我有

[app/views/admin/items/_items_list.html.erb]

(我不介意使用ERB或ARB来编写部分内容) 首次加载页面时,列表会正确呈现。

我不确定我应该在页面中包含哪个Javascript来每隔X秒刷新一次列表。更具体地说,Javascript命令应该调用哪个URL? 我是否需要在控制器中定义任何自定义操作?

感谢您的任何建议。

托马斯

1 个答案:

答案 0 :(得分:1)

我终于成功了。

[app/admin/item.rb]
ActiveAdmin.register Item do
   ...
   index do
      # do nothing; table will be filled with a partial via Javascript
   end

   collection_action :items_list do 
      @items = Item.all
  render :partial => "items_list"
   end
end

[app/views/admin/_items_list.html.arb]
table_for items do 
    column "attr_1"
    column "attr_2"
    column "attr_3"
end

[app/assets/javascripts/items.js]
$(document).ready( function() {
   setInterval(function(){
    $('#index_table_items').load('items/items_list');},1000);
   })

最后附加到app/assets/javascripts/active_admin.js以下

//= require inbox_files

这样我每秒都会更新列表表。 CSS也不会失真。