簡體   English   中英

在Rails中使用“單表繼承”制作單個創建表單

[英]Making a single create form using Single Table Inheritance in Rails

我在Rails中使用STI,並且有一個Vehicle對象,該對象具有許多不同類型的子類,例如Car,Truck等。它用於一個簡單的應用程序,因此STI在這種情況下可以正常工作,但是我無法創建可以創建任何類型的車輛記錄的單一表格。

使用以下路由:

resources :vehicles
resources :cars, :controller => 'vehicles'
resources :trucks, :controller => 'vehicles'

我可以設置/ cars和/ trucks路由,並且都指向同一表格。 但是,由於該表單指向車輛控制器,並為該表單生成一個Vehicle對象,因此無法知道/ cars URL應該創建一個Car對象。

我正在嘗試建立一個路由系統,其中/ cars指向一個本質上知道使用Car.new甚至Report.new(:type =>“ Car”)為該表單創建對象的表單。 我曾考慮過要使用/ vehicles /:subclass之類的路由系統,並以某種方式在控制器中使用params [:subclass],但我也想不出如何進行這種路由,並且仍然避免了Rails引起的其他路由錯誤STI的魔力。

我總是可以解析URL來獲取值,但這似乎是一種不安全且不可靠的方法。

我很好奇,如果有人對Rails的方法有任何建議或經驗。 謝謝!

由於您想對所有車輛使用相同的表單,因此我假設除了對象類型之外,所有字段都相同。 那么,為什么在窗體中沒有一個組合框來允許用戶選擇用戶想要創建的對象類型呢?

然后,您可以在控制器中的create動作中處理適當的持久對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM