2011-06-16 80 views
2

有兩個問題:我怎樣才能rails_admin妥善處理關聯?

1)如何在包含記錄關聯數據的模型的「列表」中創建一列?換句話說,我有一個用戶模型和一個用戶has_many帖子。我想在列表中只有一個「發佈數量」列。我嘗試過:

field :posts do 
    formatted_value do 
    value.count 
    end 
end 

但是這會導致被零除錯誤。我甚至嘗試過:

field :posts do 
    formatted_value do 
    bindings[:object].posts.count 
    end 
end 

但得到了同樣的結果。

2)如何過濾列表以一個特定的範圍是什麼?例如,我希望讓用戶發佈計數是一個鏈接,是可以點擊它會顯示給定用戶的所有帖子。

我能想出如何做到這一點是做的最好的:

# note that I created a method post_count to temporarily solve problem #1 
field :post_count do 
    formatted_value do 
    bindings[:view].link_to value, "/admin/posts?query=#{bindings[:object].id}" 
    end 
end 

不工作得很好。有沒有一種方法,以指導軌管理員做模型上的.where(:user_id => xxx)

另一件我並不是瘋狂的事情是不得不手動輸入'admin/posts'..我試圖看看我能不能做rails_admin_list_path(:model_name => "posts")。但這似乎並不奏效。

回答

1

你可能會得到rails_admin郵件列表上更好的響應 - http://groups.google.com/group/rails_admin/

關於第一個問題,這應該做的伎倆:

field :posts, :virtual do 
    formatted_value do 
    bindings[:object].posts.count 
    end 
end 

關於第二個問題,rails_admin現在有一個過濾系統 - 請參閱「添加過濾器」下拉菜單,在http://demo.railsadmin.org/admin/players。攻入這將是一個更好的方法。

rails_admin_list_path(:model_name => "posts")應該工作,你可能需要include Rails.application.routes.url_helpers或相似。

0

嘗試添加以下內容到rails_admin.rb

RailsAdmin.config {|c| c.label_methods << :field_name} 

工作對我來說