ruby on rails - रेल में नियंत्रक से link_to कैसे मिलाएं और कॉल करें?




ruby-on-rails helpers (3)

आप इसे इस तरह से कर सकते हैं:

ActionController.helpers.link_to("Click Me!", awesome_path)

लेकिन वास्तव में, उस लिंक को उत्पन्न करने के लिए एक बेहतर स्थान एक सहायक मॉड्यूल में हो सकता है जहां UrlHelper और अन्य दृश्य-संबंधी सहायक पहले से ही शामिल हैं।

[अद्यतन करें]

यह दृष्टिकोण पुराना है और अब काम नहीं करता है।

यह एक नॉब प्रश्न की तरह लगता है, लेकिन सरल उत्तर मुझे परेशान कर रहा है। मुझे एक HTML लिंक बाहर थूकने के लिए एक ActionController विधि में ActionController को कॉल करने की आवश्यकता है। ActionView::Helpers::UrlHelper.link_to url_for कॉल url_for , लेकिन यह नियंत्रक के बजाय AV मॉड्यूल के संस्करण को कॉल करता है। मैं इसमें वह करने में कामयाब रहा जो मैंने डालकर किया था

  #FIXME there must be a better way to mixin link_to
  alias_method :self_url_for, :url_for
  include ActionView::Helpers::UrlHelper
  alias_method :url_for, :self_url_for

नियंत्रक में। लेकिन, मुझे अभी भी यकीन नहीं है कि यह वास्तव में क्यों काम करता है। किसी को कृपया विधि गुंजाइश और छुपा है कि यहाँ हो रहा है समझा सकता है? link_to में मिश्रण करने का एक बेहतर तरीका क्या है (या आमतौर पर, मॉड्यूल से केवल कुछ विधियों को शामिल करने के लिए), इसलिए मैं इसे नियंत्रक में कॉल कर सकता हूं (लिंक के साथ एक फ्लैश स्ट्रिंग का उपयोग करना उपयोग मामला है।)

कृपया, MVC के बारे में कोई व्याख्यान नहीं - यदि कुछ भी हो, तो url_for एक मॉड्यूल में url_for से अलग होना चाहिए। इस पर शोर की मात्रा को देखते हुए, बहुत से लोग इस प्रतीत होता है कि मामूली झपकी लेते हैं और एक घंटे को बर्बाद करते हुए इसे "रेल रास्ता" बनाते हैं जब वास्तव में जो चाहता है वह मेरे ऐप को काम करने के लिए एक मिनट की हैक है। क्या शायद सहायकों के साथ ऐसा करने के लिए "रेल रास्ता" है? या एक बेहतर माणिक तरीका?


मुझे अभी भी अपने स्वयं के सहायक तरीकों का उपयोग करने में समस्या थी जो एक्शनकंट्रोलर.हेलपर.मे_मेथोड के साथ कंट्रोलर में निर्मित सहायक विधियों का उपयोग करती है।

स्पष्ट रूप से प्रत्येक फ्लैश के लिए रेंडर_टो_स्ट्रिंग का उपयोग करना काम करेगा, लेकिन मैं प्रत्येक फ्लैश के लिए इतने छोटे पार्टिकल्स नहीं बनाना चाहता।

मेरा समाधान एक आंशिक में कोड निष्पादित करने के लिए नियंत्रकों के लिए थोड़ा सहायक बनाने का था।

नियंत्रक में सहायक विधि:

def h(&block)
  render_to_string(:partial => 'helper', :locals => {:block => block})
end

HAML आंशिक (हेल्पर.html.haml):

= instance_eval &block 

उसी ERB (helper.html.erb) में काम करेगा:

<%= instance_eval &block %>

अपने नियंत्रक में my_custom_helper_function को कॉल करने के लिए इसे इस तरह से उपयोग करें जिसे एक सहायक में परिभाषित किया गया है:

redirect_to url, :notice => h{my_custom_helper_function}

रेल के साथ संगत 3,4 और 5:

view_context.link_to




mixins