मान लें कि मेरे पास विधि ए
def method ए नोट = नोट.फंड (params [: आईडी]] नोट.लिंक = पाराम [: लिंक] नोट.लिंक टाइप करें = पाराम [: लिंक प्रकार] नोट: पुनर्निर्देशित करें (नोट्स_उर्लि) समाप्ति जब मैं इस पद्धति को इस तरह से एक दृश्य से कॉल करता हूं , यह ठीक काम करता है
& lt;% = link_to image_tag (w.link,: border = & gt; 0), methodA_path (: linktype = & gt; w.linktype,: link = & gt; w .link,: id = & gt; @ note.id)% & gt; लेकिन, अगर मैं विधि को किसी अन्य विधि से उसी नियंत्रक में कॉल करता हूं:
def methodB ... methodA (: id = & gt;
मुझे यह त्रुटि मिलती है:
गलत तर्कों की संख्या (0 के लिए 1) विधि A को प्राप्त हो रही पैरामीटर अभी भी समान पैरामीटर हैं जो methodB को मिलते हैं, जिनके लिए मैं विधि B से नहीं भेज रहा हूं। मैं इस समस्या को कैसे प्राप्त करूं? पढ़ने के लिए धन्यवाद।
कई चीजें:
- रुबी, और इसलिए रेल पर रूबी, नामकरण सम्मेलन को कैमेलकेस के बजाय अंडरस्कोर नोटेशन का उपयोग करना है। इसलिए यह
method_aके बजायmethodAहोना चाहिए। - ऐसा लगता है कि
methodAएक नियंत्रक कार्रवाई है यदि आप अपने विधि हस्ताक्षर को देखते हैं, तो आप वास्तव में किसी भी विधि मापदंडों को परिभाषित नहीं कर रहे हैं। यह एक अच्छी बात है: कोई भी कार्य नहीं लेता है। -
पैरामीटरकॉल मेंmethodAकार्रवाई विधि मापदंडों तक नहीं पहुंच रही है, लेकिन यह एक्सेस है रेल अनुरोध - आपके विचार में, आप वास्तव में विधि बुला नहीं कह रहे हैं बल्कि, आप कार्रवाई के लिए लिंक कर रहे हैं, जो, जब क्लिक किया जाता है, तो उस कार्रवाई के लिए भेजा गया अनुरोध शुरू करें आप जिस वास्तविक विधि को बुला रहे हैं वह
methodA_pathहै, जो यूआरएल उत्पन्न कर रहा है। यह एक शॉर्टकट है जो आपके लिए कुछ मापदंडों में स्वचालित रूप से भरता है (अन्य लोग हैं जो आप पास हैं)। यह विधि स्वचालित रूप से आपके मार्गों से आपके लिए उत्पन्न होती है थोड़ा और अधिक जानकारी के लिए अपने ऐप की जड़ से एकरेक मार्गकरें। - यदि आप
methodBसे एक्शन विधि कॉल करना चाहते हैं, जो है शायद मूर्ख, आपको इसे पैरामीटर पारित करने की आवश्यकता नहीं है चूंकिmethodBभी एक अनुरोध है जिसे अपने स्वयं के अनुरोध चक्र में बुलाया जाता है,paramsहैश अभी भीmethodAके लिए उपलब्ध है, और यह सभी को मिलेगा उन चीजों को सिर्फ ठीक। हालांकि, मैं किसी तीसरे सहायक पद्धति में किसी भी सामान्य कार्यक्षमता को निकालने और प्रत्येक क्रिया से कॉल करने का सुझाव देता हूं; अन्य क्रियाओं से कार्य करने की क्रिया मुझे एक कोड गंध की तरह महसूस करती है।
सारांश का एक छोटा: methodA और methodA_path भिन्न विधियां पूर्व कोई मापदंड नहीं लेता है लेकिन रेल अनुरोध मापदंडों हैश का उपयोग करता है, जबकि बाद में url_for ।
Comments
Post a Comment