2012-04-02 7 views
17

ActiveAdminページでは、関連リソースのリストへのリンクを含めたいと思います。たとえば、サイトhas_manyセクションとサイトが(ActiveRecordモデルの)サイトに属している場合、私は自分のサイトショーページにサイト内のセクションへのリンクを含めることを望みます。サイトフィルタのプリセット。ActiveAdmin - フィルタをプリセットしてインデックスへのリンクを生成しますか?

私はではありません。は、ActiveAdminのbelongs_to関数を使いたいと考えています。私はいくつかの理由(ネストの深さ> 2、ユーザビリティの懸念)のためにネストされたリソースを望んでいません。私がしたいのは、最初にセクションインデックスページに行き、サイト別にフィルタリングすると、ActiveAdminが生成するものと似たURLを生成することです。

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

+0

これは、HABTM関係にも適用できます。'' q [sites_id_eq] ''セクションは複数形にする必要があります。' 'q [sites_id_eq]' ' – ScottJShea

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

+1

これは最適な解決策です。 – ahmacleod

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)これは、他のバージョンで動作します
希望。あなたが知っている他のバージョンで動作することが確かな場合は、この回答を更新してください。

関連する問題