我有一个使用下面的structore的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

最佳答案

这是因为在Class Facet中,您无权访问模板绑定(bind)。
为了调用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方法,不要将其包装到类中。

关于ruby-on-rails - 在Rails帮助器的类中使用link_to,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2023751/

10-10 13:13