オーバーライドする最良の方法は何form_for
ですか?
たとえばform_for(@post)
、
<form>
id 属性を自動的に に設定したいのですが@post.object_id
、
次のフィールドを追加します。hidden_field_tag :form_id, @post.object_id
を使用してこれを行うことはできますalias_method_chain
か?
オーバーライドする最良の方法は何form_for
ですか?
たとえばform_for(@post)
、
<form>
id 属性を自動的に に設定したいのですが@post.object_id
、
次のフィールドを追加します。hidden_field_tag :form_id, @post.object_id
を使用してこれを行うことはできますalias_method_chain
か?
技術的には、を使用して目標を達成できる可能性alias_method_chain
がありますが、フォームを解析し、コンテンツを挿入/変更する必要があります。これは、非常に醜く、非常に高速になる可能性があります。
代わりに、独自のカスタムバージョンでオーバーライドすることをお勧めします(元のソースは、 「show source」をクリックして、 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_forform_for
で確認できます。 「下部にあります)。
これを実現する1つの方法は、最近書いた投稿に記載されています:http: //davidsulc.com/blog/2011/05/01/self-marking-required-fields-in-rails-3/
違いは次のとおりです。メソッドをオーバーライドする代わりに、label
メソッドを書き直しますform_for
。
PS:好奇心から、なぜあなたは?を公開する必要があるのobject_id
ですか?
Railsヘルパーでは、次のようなことが簡単にできます:
def form_for(record, options = {}, &block)
options[:id] = record.class.to_s + '-' + record.id
super
end