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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top