2009-12-27 21 views
12

मैं एक गहरे लाल रंग का-ऑन-रेल पुस्तकालय मॉड्यूल लिख रहा हूँ: जब मैं render_for_search फोनअपरिभाषित विधि 'LINK_TO'

module Facets 

    class Facet 
    attr_accessor :name, :display_name, :category, :group, :special 

    ... 

    URI = {:controller => 'wiki', :action => 'plants'} 
    SEARCH = {:status => WikiLink::CURRENT} 

    #Parameters is an hash of {:field => "1"} values 
    def render_for_search(parameters) 
    result = link_to(display_name, URI.merge(parameters).merge({name => "1"})) 
    count = WikiPlant.count(:conditions => (SEARCH.merge(parameters.merge({name => "1"})))) 
    result << "(#{count})" 
    end 
    end 

    ... 

end 

मैं त्रुटि

undefined method 'link_to' 

मैं url_helper सीधे की आवश्यकता होती है की कोशिश की है मिल लेकिन यह पता नहीं लगा सकता कि क्या गलत हो रहा है।

उत्तर

16

ऐसा इसलिए है क्योंकि, एक्शन व्यू urlhelpers केवल आपकी lib निर्देशिका में नहीं, दृश्यों के लिए उपलब्ध हैं।

LINK_TO विधि ActionView :: सहायकों :: UrlHelper मॉड्यूल में पाया जाता है, के साथ साथ आप

wou तो यह प्रयास करें।

 
class Facet 
    include ActionView::Helpers::UrlHelper 
... 
end 
+1

क्या कोई समझा सकता है कि इसे टिप्पणी के बिना क्यों वोट दिया गया था? – GSP

+0

मैं निश्चित रूप से नहीं कह सकता, लेकिन जब मैं ऐसा करता हूं तो मेरा विचार तोड़ने लगता था। यकीन नहीं क्यों, लेकिन मुझे संदेह है कि इससे कुछ मुश्किल चीजें होती हैं। रेल 3.2 में – bchurchill

+0

, यह काम नहीं करता है। यह एक करता है: ActionController :: Base.helpers.link_to – GregT

20

इस प्रयास करें:

ActionController::Base.helpers.link_to 
5

सीधे शब्दों में सहायक आप बहुत आगे नहीं मिलता है भी शामिल है। हेल्पर्स मानते हैं कि वे एक अनुरोध के संदर्भ में हैं, ताकि वे डोमेन नाम पढ़ सकें और इसी तरह।

इसे दूसरी तरफ करें; एप्लिकेशन सहायक में अपने मॉड्यूल, या ऐसा कुछ शामिल करें।

# lib/my_custom_helper.rb 
module MyCustomHelper 
    def do_stuff 
    # use link_to and so on 
    end 
end 

# app/helpers/application_helper.rb 
module ApplicationHelper 
    include MyCustomHelper 
end 
संबंधित मुद्दे