Tutorial :Using link_to in a class in a Rails helper



Question:

I have a rails helper using the structore below, but when I use it I get the message

undefined method 'link_to'  

The helper is arranged as:

module MyHelper      class Facet        def render_for_search        link_to("Value", params)      end    end      class FacetList      attr_accessor :facets        def initialize        #Create facets      end        def render_for_search        result = ""        facets.each do |facet|          result << facet.render_for_search        end        result      end    end  end  


Solution:1

This is because within the Class Facet you don't have access to the template binding. In order to call the render_for_search method you probably do something like

<%= Facet.new.render_for_search %>  

Just override your initialize method to take the current context as argument. The same applies to the params hash.

class Facet    def initialize(context)      @context = context    end    def render_for_search      @context.link_to("Value", @context.params)    end  end  

Then call

<%= Facet.new(self).render_for_search %>  

Otherwise, define the render_for_search method directly within the MyHelper module and don't wrap it into a class.


Solution:2

Try using this:

self.class.helpers.link_to  

Because link_to is not defined in your current scope.

The above will work for a controller, but I'm guessing it will work inside another helper as well. If not then try:

include ActionView::Helpers::UrlHelper  

At the top of your helper.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »