के भीतर किसी इंजन के सहायक का पर्दाफाश करने का बेहतर तरीका मुझे उपभोक्ता (माता-पिता) एप्लिकेशन के लिए पहुंच योग्य नहीं होने वाले इंजन के भीतर मददगारों के मुद्दे को संबोधित करने वाले कुछ लेख मिल गए हैं।रेल 3.1: क्लाइंट ऐप
module MyEngine
module ImportantHelper
def some_important_helper
...do something important...
end
end
end
आप "पृथक इंजन के सहायकों" में rails engine प्रलेखन को देखें, तो (L293), यह कहते हैं::
# Sometimes you may want to isolate engine, but use helpers that are defined for it.
# If you want to share just a few specific helpers you can add them to application's
# helpers in ApplicationController:
#
# class ApplicationController < ActionController::Base
# helper MyEngine::SharedEngineHelper
# end
#
# If you want to include all of the engine's helpers, you can use #helpers method on an engine's
# instance:
#
# class ApplicationController < ActionController::Base
# helper MyEngine::Engine.helpers
# end
यकीन है कि हम एक ही पृष्ठ पर सभी कर रहे हैं बनाने के लिए, मान लीजिए कि हम इस डालते हैं
तो अगर मैं अपने इंजन लेने वाली उनकी application_controller.rb में जोड़ने के लिए किसी को भी पूछते हैं, तो वे पहुँच अपने सभी महत्वपूर्ण सहायक तरीकों को मिलेगा:
class ApplicationController < ActionController::Base
helper MyEngine::ImportantHelper
end
यह जो मैं चाहता है और मैं टी काम करता है, लेकिन यह एक प्रकार का दर्द है, खासतौर से यदि, मेरा उपयोग मामला है, तो उपभोग करने वाले ऐप में इंजन का खुलासा कहीं भी किया जा सकता है। इसलिए मैं थोड़ा और चारों ओर खोदा और एक समाधान है कि मैं निम्नलिखित है सुझाव दिया पाया: माता-पिता को एप्लिकेशन की आवेदन सहायक अपने सभी ImportantHelper विधि जोड़ने के लिए:
module MyEngine
class Engine < Rails::Engine
isolate_namespace MyEngine
config.to_prepare do
ApplicationController.helper(ImportantHelper)
end
end
end
अब इस बिल्कुल जो मैं चाहता है। हालांकि, यह काम नहीं करता है। क्या कोई मुझे यह समझने में मदद कर सकता है कि यह बेहतर समाधान क्यों काम नहीं करता है?
मैं रेल 3.1.3 के साथ रूबी 1.8.7 चला रहा हूं। अगर मुझे इस मुद्दे पर जर्मनी की कोई महत्वपूर्ण जानकारी याद आती है, तो मुझे बताएं, और अग्रिम धन्यवाद।
आप वास्तव में और भी सरल बना सकते हैं: सहायक माईइंजिन :: महत्वपूर्ण हेल्पर भेजो बाहर। मैंने अपनी पोस्ट अपडेट की है। – JDutil
क्या यह बदल गया है? ऐसा लगता है कि * सभी * मेरे हेल्पर्स उपरोक्त कोड के बिना स्वचालित रूप से लोड हो जाते हैं! मेरा इंजन यहां है: https: // github।com/sientia-jmu/iq_menu –
ऐसा लगता है कि कम से कम प्रत्येक कंट्रोलर को प्रत्येक कंट्रोलर में स्वचालित रूप से शामिल किया जाता है, कम से कम जब ''full' इंजन होता है। –