L'utilisation link_to dans une classe dans une aide Rails
-
19-09-2019 - |
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
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.