Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法删除数据库和视图中的项_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 无法删除数据库和视图中的项

Ruby on rails 无法删除数据库和视图中的项,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个表类别,产品。产品有外键类。我正在尝试通过index.html.erb删除产品中的(视图中),代码如下: <td><%= link_to 'Destroy', category_product_path(product), method: :delete, data: { confirm: 'Are you sure?' } %></td> 首先,为什么我会遇到这个错误,在routes或rake routes中没有“/categories/produ

我有两个表类别,产品。产品有外键类。我正在尝试通过index.html.erb删除产品中的(视图中),代码如下:

<td><%= link_to 'Destroy', category_product_path(product), method: :delete, data: { confirm: 'Are you sure?' } %></td>
首先,为什么我会遇到这个错误,在routes或rake routes中没有“/categories/product/products”url?下面是rake routes命令(省略designe routes):

编辑:通过放置以下内容解决了此问题:

resources :categories do
  resources :products, shallow: true
end

在routes.rb中,只允许在“delete”链接中使用“product”…

因为它是嵌套路由,所以需要在路由中传递类别id。比如:

<%= link_to 'Destroy', category_product_path(product, category_id: category.id), method: :delete, data: { confirm: 'Are you sure?' } %>

这里,在路径
类别产品路径(产品,类别id:category.id)
中,类别是产品所属的类别

您还可以使用
category\u product\u路径(product,category\u id:product.category.id)
作为删除路径。

使用

resources :categories do
  resources :products, shallow: true

我只能使用“product”作为url/路径

在使用上述代码时,您是否可以发布当前错误消息?完全相同。答案已编辑。尝试
category\u product\u path(product,category\u id:product.category.id)
我实际上解决了url问题-使用资源,shall:true我现在可以只使用“product”!非常感谢。然而,我现在有一个“销毁”方法错误,我将发布。在
链接到“销毁”,类别产品路径(产品)
,什么是
产品
?如果您已经将路径定义为
获取/类别/:id/products/new
,为什么会有
GET/categories/:category\u id/products/new
?对于下面的其他3条路线也一样。如果你找到了解决问题的方法,可以考虑将它作为答案而不是在问题本身中进行编辑。
<%= link_to 'Destroy', category_product_path(product, category_id: category.id), method: :delete, data: { confirm: 'Are you sure?' } %>
resources :categories do
  resources :products, shallow: true