Удаление теперь нарушает рабочие действия шоу - PullRequest
0 голосов
/ 16 апреля 2020

Буду очень признателен за любую помощь или руководство.

Удаление списка работает, однако, когда я нажимаю на списки покупок после удаления списка, нарушается ли действие показа для остальных списков под ними? Они работали до того, как я добавил действие удаления.

Исходя из этого URL http://localhost: 3000 / lists

ActiveRecord :: RecordNotFound в ListsController # show

Не удалось найти Продукт с 'id' = 7

List_controller (сжатый)

    def show
        @list = List.find(params[:id])
        @product = Product.find(params[:id])
    end
    def destroy
        @list = List.find(params[:id])
        @list.destroy
        redirect_to lists_path, notice: 'List was deleted.'
    end

Показать списки

<%= 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

показать. 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>

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Спасибо всем за ваше вмешательство - я в восторге от SO сообщества!

Проблема была в моем списке контроллеров # show от

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

до

    def show
        @list = List.find(params[:id])
    end

Я думаю, что это как-то связано со скрытым атрибутом id, который следует за вами около. Товар: идентификатор был в конфликте со списком: идентификатор в этом действии.

Я не уверен, почему эта ошибка проявляется при удалении элемента.

Однако удаление работает.

1 голос
/ 17 апреля 2020

У вас есть has_many :products, dependent: :destroy в вашей модели списка. Это вызывает удаление всех продуктов, принадлежащих этому списку. Если вы хотите сохранить продукты, вам нужно добавить:: nullify.

Я предполагаю, что вы находитесь в действии показа несуществующего продукта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...