неопределенный метод 'link_to'

Я пишу модуль библиотеки рубина на направляющих:

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

когда я называю render_for_search, я получаю ошибку

undefined method 'link_to'

Я попытался требовать url_helper непосредственно, но не могу выяснить то, что идет не так, как надо.

18
задан Mike Sutton 27 December 2009 в 12:30
поделиться

3 ответа

Это потому, что urlhelpers ActionView доступны только для Views, а не в вашем lib-директории.

метод link_to находится в ActionView::Helpers::UrlHelper модуле, плюс вы wou

так что попробуйте это.

 class Facet
   include ActionView::Helpers::UrlHelper
...
end
19
ответ дан 30 November 2019 в 06:35
поделиться

Попробуйте это:

ActionController::Base.helpers.link_to
24
ответ дан 30 November 2019 в 06:35
поделиться

Простое включение помощника не принесет вам гораздо больше пользы. Помощники предполагают, что они находятся в контексте запроса, так что они могут считывать доменное имя и т.д.

Сделайте это наоборот; включите свои модули в помощник приложения, или что-то в этом роде.

# 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
5
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: