在ActiveAdmin页面中,我想要包含指向相关资源列表的链接。例如,假设一个站点has_many Sections和一个section属于一个站点(在我的ActiveRecord模型中),我希望我的站点显示页面包含一个指向站点内部分的链接,该链接将转到Section索引页面,网站过滤器预设。
请注意,我不想要使用ActiveAdmin的belongs_to函数;出于多种原因(嵌套深度> 2以及可用性问题),我不希望嵌套资源。我想要的是生成类似于ActiveAdmin生成的URL,如果我首先进入Sections索引页面然后按Site过滤。
ActiveAdmin的过滤功能生成的查询参数列表非常疯狂;有没有一种帮助方法可以用来实现这个目标?
谢谢!
答案 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 )进行测试 希望这也适用于其他版本。如果您确定它适用于您认识的其他版本,请更新此答案。