gpt4 book ai didi

ruby-on-rails - ActiveAdmin - 使用带过滤器的范围

转载 作者:行者123 更新时间:2023-12-04 13:00:21 27 4
gpt4 key购买 nike

在我的 ActiveAdmin 模型中,我有一个自定义范围来显示已删除的记录和几个用于按特定列搜索记录的过滤器。

单独或组合使用过滤器按预期工作。

使用范围按预期工作。

问题是使用范围似乎会覆盖所有过滤器,并且在选择范围后添加的任何过滤器都不起作用。

任何人有任何想法吗?我想要的是能够显示特定范围,然后仍然能够在该范围内过滤结果。

    ActiveAdmin.register Example do
scope :deleted do |example|
Example.only_deleted
end

scope :all do |example|
Example.with_deleted
end

filter :title
filter :description

index do
column :title
column :description
end

end

[更新]

这是我采用的解决方案。我在模型上设置了 with_deleted 范围,并在侧面包含过滤器以显示/隐藏已删除的结果。不理想,因为还显示了最初删除的结果,但至少可以一起使用所有过滤器。
    ActiveAdmin.register Example.with_deleted do

filter :title
filter :description
filter :deleted, :as => :select, :collection => {:true => nil, :false => false }

index do
column :title
column :description
end

end

最佳答案

默认情况下,ActiveAdmin 希望范围只提供一个符号化的方法名称。当您以这种方式定义作用域时,它们可以链接到过滤器已经提供的作用域,并且它们可以无缝地协同工作。

所以你的错误是明确调用 Model#class_method而不是提供 :symbolized_class_method_name (具有当前模型的隐含所有者)。

如果您替换以下代码,过滤器和作用域将协同工作:

scope :all do |example|
Example.with_deleted
end

scope :deleted do |example|
Example.only_deleted
end

有了这个:
scope "Deleted", :only_deleted
scope "All", :with_deleted

关于ruby-on-rails - ActiveAdmin - 使用带过滤器的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10523407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com