我正在写一个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
当我调用render_for_search时,我收到错误
undefined method 'link_to'
我已经尝试直接要求url_helper,但无法弄清楚出了什么问题。
答案 0 :(得分:24)
试试这个:
ActionController::Base.helpers.link_to
答案 1 :(得分:19)
这是因为,ActionView urlhelpers仅适用于Views,而不适用于lib目录。
link_to方法可以在ActionView :: Helpers :: UrlHelper模块中找到,另外还有你
所以试试这个。
class Facet include ActionView::Helpers::UrlHelper ... end
答案 2 :(得分:5)
简单地包括帮助者不会让你更进一步。帮助者假设他们在请求的上下文中,以便他们可以读出域名等等。
反过来做;将您的模块包含在应用程序助手中,或类似的东西。
# 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