Ruby on rails 删除正在中断工作显示操作

Ruby on rails 删除正在中断工作显示操作,ruby-on-rails,Ruby On Rails,任何帮助或指导都将不胜感激 但是,当我在删除一个列表后点击购物列表时,会破坏下面其余列表的显示操作吗?在我添加删除操作之前,这些都可以正常工作 来自此URL ActiveRecord::在ListsController#show中找不到RecordNot 找不到“id”=7的产品 列表\u控制器(压缩) 显示列表 <%= link_to 'Delete', list_path(list), method: :delete, data: { confirm: 'Are you sure?'}

任何帮助或指导都将不胜感激

但是,当我在删除一个列表后点击购物列表时,会破坏下面其余列表的显示操作吗?在我添加删除操作之前,这些都可以正常工作

来自此URL

ActiveRecord::在ListsController#show中找不到RecordNot

找不到“id”=7的产品

列表\u控制器(压缩)

显示列表

<%= link_to 'Delete', list_path(list), method: :delete, data: { confirm: 'Are you sure?'} %>

List.rb

class List < ApplicationRecord
    belongs_to :user
    has_many :products, dependent: :destroy 
    has_many :comments, dependent: :destroy 
    accepts_nested_attributes_for :products
end
类列表
还应删除列表中包含的子产品/关联产品

class Product < ApplicationRecord
  belongs_to :list, optional: true
  has_one_attached :hero
end

类产品
show.html.erb

<%= content_tag(:h1, "Listing All Shopping Lists") %>
<table>
  <tr>
    <th>Name</th>
    <th>Action</th>
  </tr>

  <% @list.each do |list| %>
    <tr>
      <td><%= list.name %></td>
      <td><%= link_to 'Show', list_path(list) %></td>
      <td><%= link_to 'Delete', list_path(list), method: :delete, data: { confirm: 'Are you sure?'} %></td>
    </tr>
  <% end %>

</table>

名称
行动

您的列表模型中有
有许多:产品、从属::销毁。这将导致删除属于此列表的所有产品。如果要保留产品,应添加dependent::nullify


我假设您正在展示一个不存在的产品。

您的列表模型中有
有许多:产品,依赖::销毁
。这将导致删除属于此列表的所有产品。如果要保留产品,应添加dependent::nullify


我假设你是在展示一个不存在的产品。

感谢大家的干预-我被SO社区迷住了

问题出在我的清单上 从

我认为这与跟随您的隐藏id属性有关。此操作中的product:id与list:id冲突

我不知道为什么删除项目时会出现此错误


但是,删除它是可行的

感谢大家的干预——我被SO社区迷住了

问题出在我的清单上 从

我认为这与跟随您的隐藏id属性有关。此操作中的product:id与list:id冲突

我不知道为什么删除项目时会出现此错误


但是,删除它是可行的

当您看到错误时,浏览器中的URL是什么?另外,您的显示视图是什么样子的?@MarkLocklear非常感谢您的回复,您真是太好了。我更新了我原来的帖子,增加了两点。非常感谢。“删除列表是有效的,但是,当我在删除列表后单击购物列表时,会中断下面其余列表的显示操作?”您在哪个购物列表上单击?您是否已按下浏览器的“后退”按钮(打开一个现金版本的页面)并尝试打开已删除列表的显示?@3limin4t0r非常感谢您的回复,非常感谢!我可以确认,我没有点击后退按钮,因为销毁链接会在删除前一个元素的情况下重定向回列表。然后单击顶部的前几个链接中的任何一个(旧列表)。他们提出了错误。它就像其他列表产品的id在销毁时重置一样。因为只有2个或3个底部列表(工作),但是当我删除列表时。接近底部时,这些也会被破坏。当您看到错误时,浏览器中的URL是什么?还有,您的显示视图是什么样子的?@MarkLocklear非常感谢您的回复,您太好了。我更新了我原来的帖子,增加了两点。非常感谢。“删除列表是有效的,但是,当我在删除列表后单击购物列表时,会中断下面其余列表的显示操作?”您在哪个购物列表上单击?您是否已按下浏览器的“后退”按钮(打开一个现金版本的页面)并尝试打开已删除列表的显示?@3limin4t0r非常感谢您的回复,非常感谢!我可以确认,我没有点击后退按钮,因为销毁链接会在删除前一个元素的情况下重定向回列表。然后单击顶部的前几个链接中的任何一个(旧列表)。他们提出了错误。它就像其他列表产品的id在销毁时重置一样。因为只有2个或3个底部列表(工作),但是当我删除列表时。几乎触底,这些也变得破碎。非常感谢您的回复,非常感谢。修改后:销毁:作废。我在ListsController中得到了一个新的错误
ActiveRecord::NotNullViolation#destroy PG::NotNullViolation:error:column“list\u id”中的null值违反了非null约束详细信息:
可以接受:地址的嵌套属性吗,允许\u destroy:true是一个解决方案吗?要使:null生效,我相信我需要添加到产品的迁移,列表\u id列\u选项:{null:true}。对吗?有没有任何意外的后果?@dimbutries如果你想达到这个目的,那是对的。对于意外后果,您可以检查数据库完整性问题。当产品不再显示在应用程序中的任何位置时,它们将占用数据库中不必要的空间,这可能会减慢对产品表的任何查询。如果您引用产品中不存在的列表,可能会出现任何nil错误。非常感谢您的回复,非常感谢。修改后:销毁:作废。我在ListsController中得到了一个新的错误
ActiveRecord::NotNullViolation#destroy PG::NotNullViolation:error:column“list\u id”中的null值违反了非null约束详细信息:
可以接受:地址的嵌套属性吗,允许\u destroy:true是一个解决方案吗?要使:null生效,我相信我需要添加到产品的迁移,列表\u id列\u选项:{null:true}。对吗?“有没有意外的后果?”Dimbutries说
<%= content_tag(:h1, "Listing All Shopping Lists") %>
<table>
  <tr>
    <th>Name</th>
    <th>Action</th>
  </tr>

  <% @list.each do |list| %>
    <tr>
      <td><%= list.name %></td>
      <td><%= link_to 'Show', list_path(list) %></td>
      <td><%= link_to 'Delete', list_path(list), method: :delete, data: { confirm: 'Are you sure?'} %></td>
    </tr>
  <% end %>

</table>
    def show
        @list = List.find(params[:id])
        @product = Product.find(params[:id])
    end
    def show
        @list = List.find(params[:id])
    end