ActiveAdmin Collection对过滤数据的操作

时间:2014-02-13 13:50:32

标签: ruby-on-rails activeadmin

我在索引页面上有一个自定义集合操作,我想访问该操作中的过滤数据。我怎样才能做到这一点?我可以自己收藏吗?或者过滤器参数?

  collection_action :do_something do
    # call some async process
    redirect_to :action => :index, :notice => "started working!"
  end

  action_item :only => :index do
    link_to('DO WORK', do_something_admin_game_stats_path)
  end

3 个答案:

答案 0 :(得分:3)

您应该将scopefilter参数作为link_to操作的选项,然后在scoped_collection中使用collection_action

link_to "DO WORK", do_something_admin_game_stats_path(param.slice(:scope, :filter))

我不确定过滤器是否是正确的param键,但原则应该是相同的。如果由于某种原因您无法在操作链接中访问params,请尝试controller.params或者如果您真的绝望controller.send(:params)。在我的脑海中,我不确定这些参数是否可以在我头顶的视野中公开获得。

答案 1 :(得分:0)

您可以使用会话将过滤后的数据传递给 collection_action 本身。

collection_action :do_something do
   # call some async process
   filtered_data = session[:filtered_data]
   redirect_to :action => :index, :notice => "started working!"
 end

 action_item :only => :index do
   session[:filtered_data] = collection.limit(nil)
   link_to('DO WORK', do_something_admin_game_stats_path)
 end

答案 2 :(得分:0)

第二个选项是在 post 请求中发送这些参数

  collection_action :do_something do
    resource_class.ransack(params[:q]).result # returns filtered records 
    redirect_to :action => :index, :notice => "started working!"
  end

  action_item :only => :index do
    button_to 'DO WORK', do_something_admin_game_stats_path, method: :post, params: params.slice(:q)
  end