हेल्पर और हेल्पर_मेथोड क्या करते हैं?


201

helper_method सीधा है: यह नियंत्रक के कुछ या सभी तरीकों को देखने के लिए उपलब्ध कराता है।

क्या है helper? यह दूसरी तरह के आसपास है, यानी, यह एक फ़ाइल या एक मॉड्यूल में सहायक तरीके आयात करता है? (शायद नाम helperऔर helper_methodएक जैसे हैं। वे इसके बजाय हो सकते हैं share_methods_with_viewऔर import_methods_from_view)

संदर्भ

जवाबों:


295

विधि helper_methodस्पष्ट रूप से नियंत्रक में परिभाषित कुछ तरीकों को साझा करने के लिए उन्हें दृश्य के लिए उपलब्ध कराने के लिए है। यह किसी भी विधि के लिए उपयोग किया जाता है जिसे आपको नियंत्रकों और सहायकों / दृष्टिकोणों से एक्सेस करने की आवश्यकता होती है (नियंत्रकों में मानक सहायक विधियाँ उपलब्ध नहीं हैं)। उदाहरण के लिए सामान्य उपयोग का मामला:

#application_controller.rb
def current_user
  @current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user

helperदूसरी ओर विधि, नियंत्रक द्वारा प्रदान की विचारों के एक पूरे सहायक आयात करने के लिए है (और यह नियंत्रकों विरासत में मिला है)। इसका क्या मतलब है

# application_controller.rb
helper :all

रेल के लिए> 3.1

# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off

सभी सहायक मॉड्यूल को सभी दृश्यों (कम से कम एप्लिकेशन कंट्रोलर से विरासत में प्राप्त सभी नियंत्रकों के लिए) उपलब्ध कराता है।

# home_controller.rb
helper UserHelper

UserHelper विधियों को होम कंट्रोलर के कार्यों के लिए विचारों को उपलब्ध कराता है। यह करने के बराबर है:

# HomeHelper
include UserHelper

20
रेल में> = 3.1, एप्लिकेशन कंट्रोलर में 'हेल्पर: ऑल' को एप्लीकेशन में शामिल ''_ल_हेल्पर्स' कॉन्फ़िगरेशन सेटिंग से बदल दिया जाता है। Stackoverflow.com/questions/1179865 देखें ।
Jan Hettich

@ जेरेमी मुझे पता है कि यह पोस्ट पुरानी है, लेकिन अच्छी तरह से कहा गया है। मेरी मदद की!
रयान रेबो

3
"हेल्पर" और "शामिल" के बीच कुछ सरल वाक्य रचना चीनी के उपयोग के बीच अंतर है। "सहायक" नामित मॉड्यूल को विचारों और केवल विचारों के लिए उपलब्ध कराता है। "शामिल" नामित मॉड्यूल को विचारों और नियंत्रकों के लिए उपलब्ध कराता है। दोनों को विरासत में मिले नियंत्रक और उनके विचार प्रभावित करते हैं।
रिचर्ड_जी

@R_G क्या आपने देखा है कि, नियंत्रक के बजाय मॉड्यूल include UserHelperमें अंतिम स्निपेट है HomeHelper? AFAIK, नियंत्रक में सहायक हेल्पर सहित केवल तरीकों को विचारों के साथ साझा नहीं करेगा।
फ्रेंकलिन यू

नियंत्रक में सहायक मॉड्यूल सहित @FranklinYu वास्तव में विचारों के साथ तरीकों को साझा करेगा, इसलिए R_G सही है।
मैग्ने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.