Rails:为rails方法添加功能的正确方法

Pla*_*Ton 0 ruby ruby-on-rails

我只是开始修改扩展rails框架,作为一个实验,我想我会在form_for帮助器中添加一些额外的信息.具体来说,当调用form_for时,我想生成一个额外的h1标签,例如:

# regular form_for <form> opening tag
<h1>Woohoo! It's added!</h1>
# tags fed into form_for via &proc
# form_for close <form> tag
Run Code Online (Sandbox Code Playgroud)

目前我添加了一个/ lib文件,打开ActiveRecord :: FormHelper并覆盖"form for".不用说写出整个form_for方法只添加了一行添加的狗是丑陋的...但我不能调用super()因为,好吧,而不是继承我想要super()的方法,我刚刚在/ lib中覆盖了它.

所以,假设我固执地希望通过相同的form_for标签调用功能(而不是例如extended_form_for),那么回调到我覆盖的原始form_for方法的标准方法是什么?alias_method_chain?以为在我搞一些可能糟糕的做法之前我会问.如果任何坚强的退伍军人可以举一个例子我会感激.

干杯

les*_*est 5

你可以覆盖form_for你的ApplicationHelper:

module ApplicationHelper
  def form_for(*)
    content_tag(:h1, "Woohoo! It's added!") + super
  end
end
Run Code Online (Sandbox Code Playgroud)