我有使用structore下方的导轨辅助,但是当我使用它得到消息

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
有帮助吗?

解决方案

这是因为小面类内你没有访问模板绑定。 为了调用该方法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 %>

否则,定义render_for_search方法直接在MyHelper模块内,并且不将其包装成一个类。

其他提示

尝试使用这样的:

self.class.helpers.link_to

由于的link_to未在当前范围限定。

上面将用于控制器的工作,但我猜测它会另一个辅助内正常工作。如果没有,那么尝试:

include ActionView::Helpers::UrlHelper

在助手的顶部。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top