Procédé indéfini « link_to »
-
21-09-2019 - |
Question
J'écris un module bibliothèque ruby-on-rails:
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
quand je l'appelle render_for_search je reçois l'erreur
undefined method 'link_to'
J'ai essayé exigeant url_helper directement mais ne peut pas comprendre ce qui ne va pas.
La solution
En effet, urlhelpers de ActionView ne sont disponibles que pour les vues, pas dans votre répertoire lib.
la méthode link_to se trouve dans le ActionView :: :: Helpers Module UrlHelper, plus vous wou
essayer.
class Facet include ActionView::Helpers::UrlHelper ... end
Autres conseils
Essayez ceci:
ActionController::Base.helpers.link_to
Il suffit, y compris l'aide ne vous donne pas beaucoup plus loin. Les aides supposent qu'ils sont dans le cadre d'une demande, afin qu'ils puissent lire le nom de domaine et ainsi de suite.
Faites-l'inverse; comprennent vos modules dans l'assistant d'application, ou quelque chose comme ça.
# 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