ActiveAdmin - 使用过滤器预设生成索引链接?

时间:2012-04-02 22:18:55

标签: ruby-on-rails activeadmin

在ActiveAdmin页面中,我想要包含指向相关资源列表的链接。例如,假设一个站点has_many Sections和一个section属于一个站点(在我的ActiveRecord模型中),我希望我的站点显示页面包含一个指向站点内部分的链接,该链接将转到Section索引页面,网站过滤器预设。

请注意,我想要使用ActiveAdmin的belongs_to函数;出于多种原因(嵌套深度> 2以及可用性问题),我不希望嵌套资源。我想要的是生成类似于ActiveAdmin生成的URL,如果我首先进入Sections索引页面然后按Site过滤。

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

谢谢!

4 个答案:

答案 0 :(得分:23)

我使用这种语法:

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

答案 1 :(得分:19)

我稍稍在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

答案 2 :(得分: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显示了其他示例。

答案 3 :(得分:3)

  

#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.0 2.0.0.alpha )进行测试   希望这也适用于其他版本。如果您确定它适用于您认识的其他版本,请更新此答案。