0

我正在制作一个事件应用程序,其中每个事件都可以有多个待办事项列表,每个列表都有自己的任务。

我正在为任务的第三级嵌套而苦苦挣扎(todo_items)

这是我的模型:

事件.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

路线.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" = ?]):
4

2 回答 2

0

这是重定向路径的路由错误。

错误的路线是:

redirect_to event_todo_list_path(@event)

只是缺少@todo_list 参数。

redirect_to event_todo_list_path(@event, @todo_list)
于 2019-10-06T14:38:08.767 回答
0

我认为您必须确保路线正确嵌套

从事件到 todo_items

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

我不知道您是如何设置路线的,但以上是为了说明我想说的。希望有帮助

于 2019-10-06T13:52:30.107 回答