rails 嵌套资源没有路由匹配缺少必需的键 [:id]
rails nested resources no route matches missing required key [:id]
我有一个非常简单的嵌套资源案例,但我无法让它们正常工作。
我的模特:
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,这个错误就会上升。我做错了什么?我该如何纠正这个问题?任何见解将不胜感激。
试试这个:
<%= link_to 'Edit', edit_todo_list_todo_item_path(@todo_item.todo_list, @todo_item) %>
或:
<%= link_to 'Edit', edit_todo_list_todo_item_path(todo_list_id: @todo_item.todo_list.id, id: @todo_item.id) %>
我有一个非常简单的嵌套资源案例,但我无法让它们正常工作。
我的模特:
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,这个错误就会上升。我做错了什么?我该如何纠正这个问题?任何见解将不胜感激。
试试这个:
<%= link_to 'Edit', edit_todo_list_todo_item_path(@todo_item.todo_list, @todo_item) %>
或:
<%= link_to 'Edit', edit_todo_list_todo_item_path(todo_list_id: @todo_item.todo_list.id, id: @todo_item.id) %>