簡體   English   中英

Rails 3 - ActiveAdmin - 顯示ActiveRecord對象而不是文本

[英]Rails 3 - ActiveAdmin - Displaying ActiveRecord object instead of text

我目前有一個Rails 3.0.10應用程序,我用兩個簡單的關聯模型:has_many和belongs_to。

安裝ActiveAdmin插件並創建相應的Ruby資源文件后,我注意到了一些奇怪的行為。

在下面,您可以看到“作業文件”屬於“Ernet客戶端”。 這些關聯都正常工作,但顯示名稱顯示為實際的ActiveRecord對象而不是客戶端名稱。

在此輸入圖像描述

這是“作業文件”部分下的展示視圖:

在此輸入圖像描述

但是,如果我去查看實際的客戶端,則會顯示正確的文本:

在此輸入圖像描述

“作業文件”資源中肯定會出現問題導致此問題,但我無法弄清楚它可能是什么。 谷歌搜索后我發現了這個: http//groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae

在JobFile.register文件中,我使用以下命令指定了顯示名稱:

filter :ernet_client, :display_name_methods => :display_name

但這並不起作用,而且我循環瀏覽所有其他可用名稱也無濟於事。

我查找了ActiveAdmin的依賴項,sass-rails似乎是唯一的 - 但是如果你使用3.1而我正在使用Rails 3.0.10。

最后,為了確保我的關聯確實有效,我打開了Rails控制台並創建了一個作業文件:

job = JobFile.new
=> #<JobFile hash returned>
job.ernet_client_id = 2
=> 2
job.ernet_client.client_name
=> Target

似乎所有東西都應該正常運作。

任何人都有任何洞察力如何解決這個問題?

您是否嘗試在ErnetClient模型上定義to_s方法?

def to_s
  display_name
end

看起來這是自動調用的方法,就像你在控制台中的其中一個對象上調用to_s ,你會得到類似的結果。

你可以在這里找到解釋過濾選擇show object而不是object name

# Active Admin makes educated guesses when displaying objects, 
this is the list of methods it tries calling in order
        setting :display_name_methods, [ :display_name,
                                          :full_name,
                                          :name,
                                          :username,
                                          :login,
                                          :title,
                                          :email,
                                          :to_s ]

您可以在模型中定義display_namefull_name或...(請參閱上面的列表)...方法。 ActiveAdmin尋找其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM