我在 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 方法有任何建议或经验。谢谢!