2012-04-02 52 views
17

在ActiveAdmin頁面中,我想包含指向相關資源列表的鏈接。例如,假設一個網站has_many部分和一個部分belongs_to一個網站(在我的ActiveRecord模型中),我希望我的網站顯示頁面包含一個鏈接到該網站內的部分,該鏈接將轉到部分索引頁面,網站過濾器預設。ActiveAdmin - 通過過濾器預設生成鏈接到索引?

請注意,我做不是想使用ActiveAdmin的belongs_to功能;我不想嵌套的資源有很多原因(嵌套深度> 2,以及可用性問題)。我想要的是生成一個類似於ActiveAdmin生成的URL,如果我首先進入Sections索引頁面,然後按Site進行篩選。

由ActiveAdmin的過濾功能生成的查詢參數列表非常瘋狂;有沒有可以用來實現這個目標的幫手方法?

謝謝!

回答

20

我在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 
+0

謝謝,作品像一個魅力! – rogerkk 2012-06-03 13:25:58

+0

作爲附加說明,這也可以與HABTM關係一起使用。'q [site_id_eq]''部分需要複數化,所以像這樣:''q [sites_id_eq]' – ScottJShea 2013-07-12 21:09:55

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顯示了這種額外的例子。

17

我用這個語法:

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

比jgshurts的回答更好的解決方案 – pragma 2015-02-16 08:08:57

+1

這是最好的解決方案。 – ahmacleod 2015-09-28 20:24:15

1

#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
希望這個作品與其他版本,以及。如果您確定它可以與您認識的其他版本一起使用,請更新此答案。