2011-05-22 34 views
4

每当我使用simple_form_for()时,它默认为“my_subclasses_path”而不是“my_base_classes_path”。我怎样才能告诉它不使用子类?你如何获得simple_form来为urls而不是子类使用基类?

在我的情况下,我有一个用户对象,但也有很多子类。我想使用标准的用户网址,因为所有的子类对这些表单都是一样的。

此外,我想停止simple_form命名子类后的属性。例如,如果子类是“Admin”,我希望提交的参数是“params [:user]”,而不是“params [:admin]”。

我发现上面的内容真的很奇怪,因为表单实际上显示“user [first_name]”而不是“admin [first_name]” - 但simple_form似乎想要使其成为params [:admin]。

基本上,子类导致simple_for行为不正常。我希望有一个选项,如

base_class => 'User' 

这将处理所有这些事情。

+0

我仍然需要这个帮助。这其中一个实际上让我疯狂。例如,如果你是一个Admin,它是用户的子类,然后去编辑你的配置文件......它会假定你想要params [:admin]而不是params [:user]。这显然非常糟糕,因为它对于系统中的所有用户类型都会有所不同。 – 2011-05-23 21:55:25

回答

4

:url选项传递给simple_form_for

例如:simple_form_for(@admin, :url => users_path)

+0

不幸的是,这还不够。它仍然会尝试将所有属性命名为admin [first_name]而不是用户[first_name] – 2011-05-23 10:54:13

+0

使用默认的rails表单生成器并查看它是否可以解决您的问题 – rafaelfranca 2011-05-31 21:52:34

19

如果在传递:url选项为rafaelfranca表明,与一起:作为选项,它应该正常工作。例如:

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

这给了我正确的表单操作和参数(例如user [name]而不是admin [name])。

相关问题