Question

J'ai une aide de rails à l'aide du structore ci-dessous, mais quand je l'utilise, je reçois le message

undefined method 'link_to'

L'aide est agencé comme suit:

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
Était-ce utile?

La solution

En effet, au sein de la classe Facet vous n'avez pas accès au modèle de liaison. Pour appeler la méthode render_for_search vous faites probablement quelque chose comme

<%= Facet.new.render_for_search %>

Il suffit de remplacer votre méthode de initialize prendre le contexte actuel comme argument. De même pour le hachage params.

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

Ensuite, appelez

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

Dans le cas contraire, définir la méthode de render_for_search directement dans le module MyHelper et ne pas envelopper ce dans une classe.

Autres conseils

Essayez d'utiliser ceci:

self.class.helpers.link_to

Parce que link_to n'est pas défini dans votre portée actuelle.

Le ci-dessus fonctionne pour un contrôleur, mais je devine qu'il va travailler dans un autre aide aussi bien. Sinon, essayez:

include ActionView::Helpers::UrlHelper

En haut de votre aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top