2011-05-22 37 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])。

相關問題