多态关联资源的表单,其中不存在基本资源路径“/ resource”

时间:2011-01-26 18:09:36

标签: ruby-on-rails polymorphic-associations

我有一个多态资源Location可以锁定,例如Store的实例。这个“应该”成为多态资源的程度是值得怀疑的,但这是目前的重点。

位置通过location.locatable访问其多态父级。

由于该位置始终是商店等资源的子项,因此我想删除到POST /locations的路由,而是将应用程序直接发送到/stores/1/locations

现在,处理多态关联时的默认Rails方法是在控制器级别使用

进行处理
def new
  @location = Store.find(params[:store_id]).vendors.new
end

正如预期的那样,预填充location.locatable_idlocation.locatable_type。精彩。但它默认仍会路由到locations_path,我想摆脱它。

我试试,它引发了一条找不到错误的路线。

那么我如何准备一个可扩展给新父母的一般location表格?

我来到以下地方:

form_for(@location, :url => [@location.locatable, @location]) do |l|

这似乎工作得很好,但作为一个数组的路径传递让我感到烦恼,由于某种原因,我找不到关于这个主题的任何documentation。有没有更好的方法来实现这一目标?我是多态资源的新手,从一开始就做这件事会很好。


此外,一个(相当)次要的外围问题是,由于Rails实际上试图找到@location.locatable,因此这与开箱即用的默认RSpec生成的视图规范不合作。这很容易解决。我打算从上到下重写视图规范。

0 个答案:

没有答案