2

オーバーライドする最良の方法は何form_forですか?

たとえばform_for(@post)

<form>id 属性を自動的に に設定したいのですが@post.object_id

次のフィールドを追加します。hidden_field_tag :form_id, @post.object_id

を使用してこれを行うことはできますalias_method_chainか?

4

3 に答える 3

3

技術的には、を使用して目標を達成できる可能性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ですか?

于 2011-05-25T13:01:15.560 に答える
0

Railsヘルパーでは、次のようなことが簡単にできます:

def form_for(record, options = {}, &block)
  options[:id] = record.class.to_s + '-' + record.id
  super
end
于 2014-01-17T20:46:37.990 に答える