Я пишу модуль библиотеки рубина на направляющих:
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 непосредственно, но не могу выяснить то, что идет не так, как надо.
Это потому, что urlhelpers ActionView доступны только для Views, а не в вашем lib-директории.
метод link_to находится в ActionView::Helpers::UrlHelper модуле, плюс вы wou
так что попробуйте это.
class Facet include ActionView::Helpers::UrlHelper ... end
Попробуйте это:
ActionController::Base.helpers.link_to
Простое включение помощника не принесет вам гораздо больше пользы. Помощники предполагают, что они находятся в контексте запроса, так что они могут считывать доменное имя и т.д.
Сделайте это наоборот; включите свои модули в помощник приложения, или что-то в этом роде.
# 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