2011-10-29 20 views
6

के बजाय वस्तु मैं वर्तमान में एक रेल 3.0.10 ऐप है और मैं साधारण संघों के साथ दो मॉडल बनाया: has_many, और belongs_to।रेल 3 - ActiveAdmin - प्रदर्शित ActiveRecord पाठ

ActiveAdmin प्लगइन स्थापित करने और इसी रूबी संसाधन फ़ाइलों बनाने के बाद, मैं कुछ अजीब व्यवहार देखा है।

नीचे, आप है कि "नौकरी फ़ाइल" belongs_to "ई.आर.नेट ग्राहक" देख सकते हैं। एसोसिएशन सभी सही तरीके से काम कर रहे हैं, हालांकि, डिस्प्ले नाम क्लाइंट नाम के बजाय वास्तविक ActiveRecord ऑब्जेक्ट के रूप में दिखाई दे रहा है।

enter image description here

लेकिन, अगर मैं वास्तविक ग्राहक देखने पर जाना, सही पाठ प्रकट होता है::

enter image description here

यह शो दृश्य "नौकरी फ़ाइल" के तहत जब है

enter image description here

"जॉब फ़ाइल" resou में कुछ गलत होना चाहिए आरसी जो इसका कारण बन रहा है, लेकिन मैं यह नहीं समझ सकता कि यह क्या हो सकता है। JobFile.register फ़ाइल के भीतर http://groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae

मैं इस के साथ प्रदर्शन नाम निर्दिष्ट: googling के बाद मैं इस पाया,

filter :ernet_client, :display_name_methods => :display_name 

यह काम नहीं किया है, हालांकि, और मैं अन्य उपलब्ध नामों में से सभी के माध्यम से साइकिल कोई फायदा नहीं।

मैं ActiveAdmin की निर्भरता और सास-रेल देखा केवल एक ही प्रतीत हो रहा है - लेकिन वह यह है कि अगर आप 3.1 का उपयोग कर रहे हैं और मैं रेल 3.0.10 उपयोग कर रहा हूँ।

और अंत में, यकीन है कि मेरी संघों वास्तव में काम कर रहे थे हो सकता है, मैं रेल सांत्वना खोला और एक नौकरी फ़ाइल बनाई:

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

सब कुछ एकदम सही ढंग से काम कर रहा है।

किसी को भी इसका समाधान करने के बारे में कोई अंतर्दृष्टि है?

उत्तर

10

आप ErnetClient मॉडल पर एक to_s विधि को परिभाषित करने की कोशिश की?

def to_s 
    display_name 
end 

यह ऐसा दिखता है कि स्वचालित रूप से विधि बुलाया जा रहा है, के रूप में यदि आप कंसोल आप एक ऐसी ही परिणाम मिलेगा में इन वस्तुओं में से एक पर to_s फोन किया था।

+0

ठीक है, मैंने आपके द्वारा सुझाए गए ErnetClient.rb मॉडल में एक to_s विधि परिभाषित की है। यह सक्रिय_admin/resource/index.html.arb फ़ाइल में त्रुटि उत्पन्न करता है: # के लिए अपरिभाषित स्थानीय चर या विधि 'display_name'। हालांकि, मैंने विधि में "display_name" प्रतीक भी रखा है।इसने फ़िल्टर ड्रॉपडाउन को सचमुच सभी ड्रॉपडाउन विकल्पों के लिए "display_name" प्रस्तुत करने का कारण बताया। – PhillipKregg

+0

ठीक है, आपके पास इसके लिए 'display_name' विधि नहीं है। 'To_s' विधि को आपके' ErnetClient' ऑब्जेक्ट के लिए जो भी स्ट्रिंग दिखाना है उसे वापस करना चाहिए। –

+0

जो मैं देख रहा हूं, से display_name एक तरीका है जो पहले से ही ActiveAdmin प्लगइन में व्यूथर्स के अंतर्गत मौजूद है: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/view_helpers/display_helper.rb। क्या ऐसा कुछ ऐसा हो सकता है जो मेरे ऐप को इसे देखने से रोक रहा हो? – PhillipKregg

3

आप स्पष्टीकरण यहाँ Filter select show object instead of 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_name, full_name परिभाषित कर सकते हैं, या ... ... अपने मॉडल में विधि (सूची ऊपर देखें)। ActiveAdmin उनमें से एक के लिए देखता है।

संबंधित मुद्दे