4

simple_form_for()を使用するときは常に、デフォルトで「my_base_classes_path」ではなく「my_subclasses_path」になります。サブクラスを使用しないようにするにはどうすればよいですか?

私の場合、Userオブジェクトがありますが、多くのサブクラスもあります。これらのフォームではすべてのサブクラスが同じように機能するため、標準のユーザーURLを使用したいと思います。

さらに、simple_formがサブクラスの後にプロパティに名前を付けるのを止めたいと思います。たとえば、サブクラスが「Admin」の場合、送信されるパラメーターを「params [:admin]」で​​はなく「params [:user]」にします。

フォームには実際には「admin[first_name]」ではなく「user[first_name]」と書かれているので、上記は本当に奇妙だと思いますが、simple_formはとにかくそれをparams [:admin]にしたいと思っているようです。

基本的に、サブクラスが原因でsimple_forが正しく動作しません。次のようなオプションがあればいいのに

base_class => 'User'

それはこれらすべてを処理します。

4

2 に答える 2

19

rafaelfrancaが示唆するように:urlオプションを:asオプションと一緒に渡すと、正しく機能するはずです。例えば:

simple_form_for(@admin, :url => user_path(@admin), :as => :user)

これにより、正しいフォームアクションとパラメーターが得られます(たとえば、admin[name]の代わりにuser[name])。

于 2012-03-26T12:23:08.683 に答える
4

:urlオプションをに渡しますsimple_form_for

例えば。:simple_form_for(@admin, :url => users_path)

于 2011-05-23T02:41:02.713 に答える