Ошибка несоответствия ограничений с Form_for с тройной вложенностью - PullRequest
0 голосов
/ 06 октября 2019

Я создаю приложение для событий, где каждое событие может иметь несколько списков дел, каждый со своими задачами.

Я борюсь с вложенностью задач третьего уровня (todo_items)

Вот мои модели:

Event.rb

has_many :todo_lists, :dependent => :destroy
has_many :todo_items, :through => :todo_lists 

accepts_nested_attributes_for :todo_lists
accepts_nested_attributes_for :todo_items

Todo_list.rb

 has_many :todo_items, :dependent => :destroy

 accepts_nested_attributes_for :todo_items

 belongs_to :event

Todo_item.rb

belongs_to :todo_list

Todo_list_Controller.rb

def set_todo_list
  @todo_list = @event.todo_lists.find(params[:id])
end

def set_event
  @event = Event.find(params[:event_id])
end

def todo_list_params
  params.require(:todo_list).permit(:title, :description, :event_id)
end

Todo_items_Controller.rb

def set_todo_list
  @todo_list = TodoList.find(params[:todo_list_id])
end

def set_todo_item
  @todo_item = @todo_list.todo_items.find(params[:id])
end

def todo_item_params
  params[:todo_item].permit(:content, :todo_list_id)
end

rout.rb

resources :events do
    resources :todo_lists do
      resources :todo_items do
        member do
          patch :complete
        end
      end
    end
end

Если потребуется какой-либо другой код, я обновлю! Заранее спасибо!

Я приложил все усилия, чтобы вложить объекты. Я могу добавить задачи (todo_items) в список todo_list, но не могу удалить или выполнить их.

Ошибка происходит от todo_LIST_controller, а не todo_ITEMS_controller

Журнал ошибок:

ActiveRecord::RecordNotFound (Couldn't find TodoList with 'id'=5 [WHERE "todo_lists"."event_id" = ?]):

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Это была ошибка маршрутизации с путем перенаправления.

Неправильный маршрут:

redirect_to event_todo_list_path(@event)

просто пропущен параметр @todo_list.

redirect_to event_todo_list_path(@event, @todo_list)
0 голосов
/ 06 октября 2019

Я думаю, вам нужно убедиться, что маршруты правильно вложены

от событий к todo_items

resources :event do
  resources :todo_lists do
     resources :todo_items
  end
end

Я не знаю, как вы настраиваете свои маршруты, новыше, чтобы проиллюстрировать, что я пытаюсь сказать. Надеюсь, это поможет

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