未定义的方法'link_to'

时间:2009-12-27 12:30:39

标签: ruby-on-rails link-to url-helper

我正在写一个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,但无法弄清楚出了什么问题。

3 个答案:

答案 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