rails:如何覆盖 cocoon gem 辅助方法并调用原始方法

Posted

技术标签:

【中文标题】rails:如何覆盖 cocoon gem 辅助方法并调用原始方法【英文标题】:rails: how to override cocoon gem helper method and call original method 【发布时间】:2014-10-06 06:20:04 【问题描述】:

我需要覆盖cocoon gem 中的一个方法,然后调用原始方法。这是怎么做到的?

# gem code
module Cocoon
  module ViewHelpers
    def link_to_add_association(*args, &block)
      #...stuff
    end
  end
end

# in a helper or initializer
def link_to_add_association(*args, &block)
   #...do something
   <call original method>
end

【问题讨论】:

【参考方案1】:
# in a helper or initializer
def link_to_add_association(*args, &block)
  #...do something
  super
end

【讨论】:

那行不通,没有super可以调用。该方法没有继承类。 super 也适用于模块。也许在定义了所有代码之后包含了 Cocoon ......嗯......实际上你可以为你的助手选择一个不同的名字 是的,我认为这是唯一的解决方案

以上是关于rails:如何覆盖 cocoon gem 辅助方法并调用原始方法的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4 & cocoon gem:无法将 3 级子级添加到动态添加的 2 级子级

<ol> <li> 使用 rails partial 和 cocoon gem 实现的问题

如何从 Rails 中的 gem 覆盖类的方法?

如何将复制按钮集成到使用 cocoon gem 创建的表单中

Rails webpack 错误:第 3 方 gem 无法解析 jQuery

Cocoon gem,编辑或错误时未建立深度关联