我有一个使用下面结构的rails helper,但是当我使用它时,我收到了消息
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
答案 0 :(得分:7)
尝试使用:
self.class.helpers.link_to
因为当前范围内未定义link_to。
以上将适用于控制器,但我猜它也适用于另一个帮助器。如果没有,请尝试:
include ActionView::Helpers::UrlHelper
在帮助者的顶端。
答案 1 :(得分:3)
这是因为在Class Facet中您无权访问模板绑定。
为了调用render_for_search
方法,您可能会执行类似
<%= Facet.new.render_for_search %>
只需覆盖您的initialize
方法即可将当前上下文作为参数。
这同样适用于params hash。
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 %>
否则,直接在render_for_search
模块中定义MyHelper
方法,不要将其包装到类中。