मैं कुछ विरासत डेटाबेस तालिकाओं के चारों ओर एक त्वरित सीआरयूडी अनुप्रयोग फेंकने के लिए Grails मचान का उपयोग करने की कोशिश कर रहा हूं (इस प्रकार गाथा के लिए this previous StackOverflow question देखें)। अब मैं सबसे बुरी समस्याओं से पहले हूं, और एक कामकाजी सीआरयूडी ऐप है, लेकिन सामान्य उपयोगिता के साथ एक समस्या शेष है।विदेशी-प्रमुख संघों के लिए अनुकूल लेबल (आईडी कुंजी के बजाए) Grails मचान
मेरे कई डोमेन ऑब्जेक्ट्स में अन्य डोमेन ऑब्जेक्ट्स के साथ विदेशी-कुंजी संघ हैं। एक Contact
, एक Owner
के अंतर्गत आता है आदि
हालांकि, Contact
के लिए CRUD पन्नों पर, मैं Owner
के लिए वास्तविक id
कुंजी देखने के लिए ... क्योंकि है कि मानव उपयोगकर्ताओं के लिए कुछ भी मतलब नहीं है नहीं करना चाहती। मैं इसके बजाय स्क्रीन पर प्रदर्शित अधिक मानव-अनुकूल Owner.name
मान चाहता हूं।
"सूची" और "शो" दृश्य दृश्य के स्वचालित रूप से जेनरेट किए गए कोड में सभी विशेषताओं के साथ स्पष्ट रूप से सौदा करते हैं, और मेरे पास प्रस्तुत किए गए नियंत्रण को नियंत्रित करने के लिए उस कोड को ट्विक करने की क्षमता है। हालांकि, "निर्माण" और "संपादन" दृश्य सभी विशेषताओं को सूचीबद्ध नहीं करते हैं।
...
<fieldset class="form">
<g:render template="form"/>
</fieldset>
...
इस कॉल जाहिरा तौर पर रनटाइम पर ऑटो का पता लगाता है क्या क्षेत्र हैं, और उन्हें कैसे प्रदर्शित करने के लिए के बारे में अपने आप ही निर्णय करता है: इसके बजाय उन दृश्य Grails किसी तरह का taglib इस तरह फोन बनाते हैं। एसोसिएशन वाले डोमेन ऑब्जेक्ट्स के लिए, यह अधिक मानव-अनुकूल विशेषता के बजाय संबंधित ऑब्जेक्ट की गिब्बिश आईडी प्रदर्शित करने का बुरा निर्णय लेता है।
क्या "संपादन" या "निर्माण" दृश्य पर फ़ील्ड प्रदर्शित होने के तरीके को बदलने के लिए कोई "आसान" (या कम से कम "सर्वोत्तम अभ्यास") तरीका है? निश्चित रूप से यह एक आम मुद्दा है जब भी मचान का उपयोग डोमेन ऑब्जेक्ट्स के साथ एसोसिएशन के साथ किया जाता है।
यह एक साइड मामला है, लेकिन बाद में मुझे पता चला कि उपरोक्त यह कोड स्निपेट बस "_form.gsp" फ़ाइल से HTML में खींच रहा है, जो उसी डोमेन ऑब्जेक्ट के लिए स्वत: जेनरेट किए गए दृश्यों के रूप में उसी निर्देशिका में स्वतः उत्पन्न होता है । –