在Rails帮助器中的类中使用link_to

我有一个使用下面结构的rails帮助器,但是当我使用它时,我得到了消息

undefined method 'link_to' 

帮助者安排如下:

 module MyHelper class Facet def render_for_search link_to("Value", params) end end class FacetList attr_accessor :facets def initialize #Create facets end def render_for_search result = "" facets.each do |facet| result << facet.render_for_search end result end end end 

这是因为在Class Facet中您无权访问模板绑定。 为了调用render_for_search方法,你可能会做类似的事情

 <%= Facet.new.render_for_search %> 

只需覆盖initialize方法,将当前上下文作为参数。 这同样适用于params散列。

 class Facet def initialize(context) @context = context end def render_for_search @context.link_to("Value", @context.params) end end 

然后打电话

 <%= Facet.new(self).render_for_search %> 

否则,直接在MyHelper模块中定义render_for_search方法,不要将其包装到类中。

试试这个:

 self.class.helpers.link_to 

因为当前范围中未定义link_to。

以上将适用于控制器,但我猜它也可以在另一个帮助器中工作。 如果没有,那么尝试:

 include ActionView::Helpers::UrlHelper 

在帮助者的顶部。