У меня очень простой случай вложенных ресурсов, но у меня проблемы с тем, чтобы заставить их работать.
Мои модели:
class TodoList < ActiveRecord::Base
has_many :todo_items, dependent: :destroy
class TodoItem < ActiveRecord::Base
belongs_to :todo_list
Мой контроллер:
class TodoItemsController < ApplicationController
before_action :set_todo_list
before_action :set_todo_item, only: [:show, :edit, :update, :destroy]
def show
end
private
def set_todo_item
@todo_item = @todo_list.todo_items.find(params[:id])
end
def set_todo_list
@todo_list = TodoList.find(params[:todo_list_id])
end
Мой show.html.erb:
<%= link_to 'Edit', edit_todo_list_todo_item_path([@todo_item.todo_list, @todo_item]) %>
Я получил ошибку
"No route matches {:action=>"edit", :controller=>"todo_items", :id=>nil, ..., missing required keys: [:id].
Я знаю, что todo_item_id отсутствует, но я не мог понять, почему.Когда я отлаживал, я видел, что и @todo_list, и @todo_item получали значения.Но как только будет назначен @todo_item, эта ошибка возрастет.Что я сделал не так?Как я могу это исправить?Любые идеи будут оценены.