2012-03-25 17 views
0

私はちょうどレールフレームワークを拡張することを試みています。実験として、form_forヘルパー内にいくつかの追加情報を追加すると思いました。私はActiveRecordの:: FormHelperのを開き、のために、「フォームを上書きします/ libにファイルを追加しましたRails:レールメソッドに機能を追加する適切な方法

# regular form_for <form> opening tag 
<h1>Woohoo! It's added!</h1> 
# tags fed into form_for via &proc 
# form_for close <form> tag 

瞬間:のform_forが呼ばれたときのような具体的に、私は余分なH1タグを生成したいのですが"言うまでもなく、追加された行が1つだけ追加されたform_forメソッド全体を書き出すことは、醜いです...しかし、super()を呼び出すことはできません。なぜなら、私はsuper()メソッドを継承する代わりに、私は/ libに上書きしました。

したがって、私は頑強に同じform_forタグ(例えばextended_form_forではなく)を呼び出すようにしたいと思いますが、元のform_forメソッドを呼び出すための標準的な方法は何ですか? alias_method_chain?私はいくつかの潜在的な悲惨な慣習にセメントをかける前に尋ねると思った。強硬派のベテランが例を挙げることができたら、私は感謝しています。

乾杯

答えて

1

alias_method_chainは、これまででまだ元のメソッドを呼び出すことができながらメソッドを上書きする最も簡単な方法です。ですから、このような何かをしたいでしょう、あなたのlibファイルに:

def form_for_with_header(...) 
    form_for_without_header(...) 
    content_tag(:h1, "Header tag here") 
    # etc... 
end 
+0

を私は@ LESTの答えは、より多くのレールの方法だと思います –

5

あなたのApplicationHelperform_forオーバーライドすることができます:

module ApplicationHelper 
    def form_for(*) 
    content_tag(:h1, "Woohoo! It's added!") + super 
    end 
end 
関連する問題