2011-01-19 17 views
5

मैं एक सहायक विधि, my_method परिभाषित करना चाहता हूं, जो BuyersController विधियों के अंदर उपलब्ध होगा (जैसे index, create, e.t.c.)।रेल: एक सहायक विधि को परिभाषित करने के लिए जहां कई नियंत्रकों के लिए उपलब्ध होगा?

मैं app/helpers/application_helper.rb में इसे परिभाषित करने की कोशिश की, लेकिन यह काम नहीं किया:

undefined method `my_method' for #<BuyersController:0x26df468> 

यह कुछ साझा जगह में होना चाहिए, क्योंकि मैं भी अन्य नियंत्रकों में उपयोग करना चाहते हैं। यही कारण है कि मैंने app/helpers/application_helper.rb की कोशिश की।

इसे परिभाषित करने के लिए सही जगह क्या है?

उत्तर

11

यह होना चाहिए में app/controllers/application_controller.rb

app/helpers/application_helper.rb साझा दृश्य सहायकों के लिए है।

+4

मुझे लगता है कि मिशा नियंत्रकों ** और ** विचारों के लिए उपलब्ध विधियों के लिए पूछ रही है। 'ApplicationController' में एक विधि सभी नियंत्रकों के लिए उपलब्ध होगी लेकिन उनके विचारों के लिए नहीं। – edgerunner

+0

असल में, मुझे विचारों के तरीकों में रूचि नहीं थी। –

1

आपको अपने एप्लिकेशन नियंत्रक में एप्लिकेशन सहायक मॉड्यूल शामिल करना चाहिए ताकि अनुरोध के दौरान इसकी विधियां हर जगह उपलब्ध हों (सभी नियंत्रक और विचार)।

class ApplicationController < ActionController::Base 
    helper ApplicationHelper 
    … 
end 

, helper विधि

2

रेल 3 से शुरू आप भी अपने नियंत्रक

0

accepted answer पर विस्तार अंदर view_context.my_method कह सकते हैं के लिए एपीआई डॉक्स देखें आप एक नियंत्रक साझा करने के लिए करना चाहता था, तो विचारों के साथ विधि, helper_method इसके लिए उपयुक्त लगता है।

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

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