【问题标题】:How to keep parameters after clicking clear filters in ActiveAdmin在 ActiveAdmin 中单击清除过滤器后如何保留参数
【发布时间】:2013-12-20 17:13:48
【问题描述】:

我有一种骇人听闻的设置,我在公司列表中显示一些信息,然后单击其中一个公司名称会显示为该公司生成的所有潜在客户的列表。我通过参数传递 company_id 来实现这一点。这很好用,我可以搜索和过滤到我心中的内容,直到我点击“清除过滤器”,它会删除所有内容,包括 company_id。结果是一个糟糕的页面,因为系统没有用于生成潜在客户列表的 company_id。

我在该页面的控制器中尝试了类似的操作

after filter: company_id, :only => :index

def franchise_id
  params.merge({:franchise_id => params[:franchise_id]})
end

但这只会在我过滤某些内容后注入 ID,而不是在单击“清除过滤器”后注入。

有没有办法覆盖此页面的“清除过滤器”行为并强制它保存 company_id?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activeadmin


    【解决方案1】:

    活跃管理员currently does this:

    $ ->
      $('.clear_filters_btn').click ->
        window.location.search = ''
    

    你可以手动移除这个点击事件来做任何你想做的事情:

    $ ->
      $('.clear_filters_btn').off('click').click ->
        # your stuff
    

    尽管您可能想在 Github 上创建一张票,以便我们讨论更改按钮行为的优点。

    更新 1

    我编写了一些代码来选择性地去除 Active Admin 的参数,而保留您的参数:

    $ ->
      $('.clear_filters_btn').click ->
        location.search = location.search.split('&').filter(
          (s)-> not s.match(/^(q\[|page|commit|order)/)
        ).join '&'
    

    把它放在active_admin.js.coffee,你会很好。

    更新 2

    如果您想将 JS 应用于 Active Admin 中的特定页面,您可以在页面加载时检查应用于 HTML <body> 标记的 CSS 类,以判断它是否是您想要的。值得注意的是,AA 添加了当前控制器动词(索引、显示等)和相关资源的实际名称。将此代码仅应用于公司的索引页:

    $ ->
      if $('body.index.admin_companies').length
        $('.clear_filters_btn').click ->
          location.search = location.search.split('&').filter(
            (s)-> not s.match(/^(q\[|page|commit|order)/)
          ).join '&'
    

    【讨论】:

    • 我希望你能原谅我的无知,但我对很多开发还是很陌生,而且我对 Javascript 一点也不了解。我将如何在我正在处理的一个管理页面的上下文中覆盖它?
    • @unstablerealtiy 我用一个明确的解决方案更新了我的答案,您应该能够将其复制并粘贴到您的应用程序中。
    • 顺便说一句,如果您想参与其中,我为此创建了一张票:github.com/gregbell/active_admin/issues/2811
    【解决方案2】:

    以前的解决方案对我不起作用,所以如果有人还在为 clear_filters_btn 苦苦挣扎:

    这是我如何使它工作的:

    将此添加到 active_admin.js

    $(function() {
      $(document).off('click', '.clear_filters_btn');
      $('.clear_filters_btn').attr('href', '?commit=clear_filters');
    })

    【讨论】:

      猜你喜欢
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多