【问题标题】:Making a single create form using Single Table Inheritance in Rails在 Rails 中使用单表继承创建单个创建表单
【发布时间】:2011-04-30 12:47:27
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails forms routing subclass single-table-inheritance


    【解决方案1】:

    由于您想对所有车辆使用相同的表单,所以我假设所有字段都相同,除了对象类型。那么为什么不在表单中有一个组合框来允许用户选择用户想要创建的对象类型呢?

    然后您可以在控制器的创建操作中处理适当的对象持久化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多