2013-04-27 86 views
1

我在Active Rails中使用了Ruby on Rails,我遇到了某些模型顯示在面板中的問題。Rails + Active Admin:顯示名稱

User爲例,如果我沒有定義任何友好的顯示方法,我會看到#<User:00000006b47868>。所以Active Admin建議實施一種方法來爲每個班級指定如何顯示它。

根據文檔(http://activeadmin.info/docs/3-index-pages/index-as-table.html),主動聯繫尋找這些方法中的一個猜測顯示什麼,按以下順序:

:display_name, :full_name, :name, :username, :login, :title, :email, :to_s

所以具有User類中這個方法可以解決問題:

然而,使用Active管理員之前,我已經使用方法display_name與其他用途(例如,以v )以便以友好的方式顯示用戶名,並且我不想在Active Admin面板中顯示相同的內容。

我不能更改方法的名稱,因爲我在項目中的很多文件中使用display_name,並且更改它可能會在應用程序中引入錯誤。

對於這種情況,一個理想的解決方案應該是像Active Directory管理員用來在其面板中顯示模型的active_admin_name方法。所以問題是:

有什麼辦法有一個被Active Admin調用而不是display_name的方法嗎?例如,導致下面的順序:

:active_admin_name, :display_name, :full_name, :name, :username, :login, :title, :email, :to_s

我已經搜查活動管理文件和config/initializers/active_admin.rb,但我無法找到一個方法來做到這一點。

謝謝!

回答

3

嘗試

ActiveAdmin.setup do |config|  
    config.display_name_methods = [:active_admin_name, :display_name ...] 
end 

你可以找到lib/active_admin/application.rb

+0

此設置,我認爲我沒有在我的項目文件。我試圖創建它並將代碼放在那裏,但它不起作用。我也嘗試把這個代碼放在'config/initializers/active_admin.rb'中,但是沒有好的結果。我發現在Active Admin源代碼中有一些類似你的代碼:https://github.com/gregbell/active_admin/blob/master/lib/active_admin/application.rb也許我們必須把它放在其他文件中? – 2013-04-27 20:13:26

+0

它適用於我使用AA 0.6.0的項目。我在'config/initializers/active_admin.rb'中定義了'config.display_name_methods = [:admin_display_name,....]'。確保你重新啓動你的應用程序。 – baxang 2013-07-24 12:13:42