【问题标题】:ActiveAdmin - generate link to index, with filter preset?ActiveAdmin - 生成索引链接,带有过滤器预设?
【发布时间】:2012-04-02 22:18:55
【问题描述】:

在 ActiveAdmin 页面中,我想包含一个指向相关资源列表的链接。例如,假设一个

  • 网站has_many 部分和,
  • belongs_to 一个站点部分(在我的 ActiveRecord 模型中),

我希望我的站点的显示页面包含指向站点内分区的链接,该链接将转到分区索引页面,并带有站点过滤器预设。

注意

  • 我确实想使用 ActiveAdmin 的belongs_to 功能;
  • 出于多种原因(嵌套深度 > 2 以及可用性问题),我不想要嵌套资源。

我想要的是生成一个类似于 ActiveAdmin 生成的 URL,如果我首先转到 Sections 索引页面然后按站点过滤。

ActiveAdmin 的过滤功能生成的查询参数列表非常疯狂;有没有我可以用来实现这个目标的辅助方法?

谢谢!

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    我使用这种语法:

    link_to "Section", admin_sections_path(q: { site_id_eq: site.id })
    

    【讨论】:

    • 比 jgshurts 的答案更好的解决方案
    • 这是最好的解决方案。
    【解决方案2】:

    在 meta_search 中摸索了一下之后,我找到了一个相当令人满意的解决方案。语法有点笨拙,但可以解决问题。

    index do
      ...
      column "Sections" do |site|
      link_to "Sections (#{site.sections.count})", :controller => "sections", :action => "index", 'q[site_id_eq]' => "#{site.id}".html_safe
      end
    end
    

    【讨论】:

    • 作为附加说明,这也适用于 HABTM 关系。 'q[site_id_eq]' 部分需要复数,所以像这样:'q[sites_id_eq]'
    【解决方案3】:

    正如 jgshurts 所指出的,诀窍在于识别 q[site_id_eq] 查询参数。

    但是,如果您不喜欢笨拙的语法,您也可以只使用路径助手:

    link_to "Sections (#{site.sections.count})", admin_sections_path('q[site_id_eq]' => site.id)
    

    UrlHelper#link_to documentation 显示了其他示例。

    【讨论】:

      【解决方案4】:

      #auto_link(resource, content = display_name(resource)) ⇒ Object

      自动将对象链接到其资源控制器。如果 资源尚未注册,该资源的字符串表示 对象被返回。

      链接中的默认内容是从 ActiveAdmin::ViewHelpers::DisplayHelper#display_name

      可以传入要显示的内容

      例如:auto_link(@post, "My Link")

      ActiveAdmin.register Girl do
        index do
          selectable_column
      
          column :name do |girl|
            auto_link(girl, girl.name)
          end
      
          column :email
          column :created_at
          actions
        end
      

      有用的链接:http://www.rubydoc.info/github/gregbell/active_admin/ActiveAdmin/ViewHelpers/AutoLinkHelper

      注意:这是使用 ActiveAdmin 测试的(v1.1.02.0.0.alpha
      希望这也适用于其他版本。如果您确定它适用于您知道的其他版本,请更新此答案。

      【讨论】:

      • 这没有回答问题 - 提问者想知道如何在资源列表页面上预填充过滤器,而不是如何链接到特定资源。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2015-12-14
      • 2011-09-05
      • 1970-01-01
      • 2016-06-15
      相关资源
      最近更新 更多