代码之家  ›  专栏  ›  技术社区  ›  MiniQuark

是否可以将ActiveScaffold配置为在显示列表之前显示搜索表单?

  •  1
  • MiniQuark  · 技术社区  · 17 年前

    当我要求ActiveScaffold向我显示一个很长的列表(例如销售的产品列表)时,它运行数据库查询以获取第一页数据并显示它。如果列表有一些关系,则执行此查询可能需要一些时间(一秒钟以上)。大多数时候,我对这个“未过滤”列表不感兴趣:我想做的第一件事就是点击“搜索”并过滤掉这个列表。

    我能告诉你什么吗 要在调用列表操作时显示未筛选的列表?我希望它只是显示搜索表单,等待输入一些条件,并且只显示

    2 回复  |  直到 17 年前
        1
  •  1
  •   MiniQuark    17 年前

    我通过定义 收集的条件 方法在控制器中。这是一种黑客行为,但它很简单(3行),而且很有效:

    def conditions_for_collection
      params[:action]=="update_table" ? "" : "1=2"
    end
    

    列表 收集的条件 (不是 更新表

    用户可以点击“搜索”按钮,启动搜索。这就叫 动作,再次调用ActiveScaffold 收集的条件 ,这一次返回“”(无筛选器),因此将搜索整个列表。

    它不是很漂亮,但确实很好。

        2
  •  0
  •   Otto    17 年前

    #index 操作并提供您自己的模板。似乎没有办法告诉它不要显示该列表。

    大概是这样的:

    active_scaffold :models do |config|
        config.actions.exclude :index
    end
    

    然后,您必须实现自己的索引方法,该方法有自己的模板等等。返回活动脚手架的搜索操作。我不确定你是怎么做到的,但是如果你查看原始页面的HTML源代码,你会发现它链接到的是什么操作,它会进行搜索。