我不太确定我是否理解"成员操作"块在轨道路由中的目的
resources :todo_lists do
resources :todo_items do
member do
patch :complete
end
end
end
在上面的代码中,我知道todo_items是todo_lists的嵌套资源,但我不知道patch:complete在做什么。我只知道上面的代码给了我一个新的路径,complete_todo_list_todo_item_path
代码必须在成员块中吗?成员区块的目的是什么?
成员块在您的模型中需要额外的路由时使用,在您创建资源时创建个人(需要模型的id)并收集资源,例如:get是个人路由,index是收集路由。
现在,如果您想要同一模型上的另一条路线,您可以使用成员块来创建新的单独路线或收集块(如果您需要收集路线)
在您的示例中,您为嵌套在todo_lists上的todo_items中的上创建了一个修补程序路由,就像其他资源一样。
成员路由需要一个ID,因为它作用于成员。在你的情况下,它会生成类似的url
url => todo_lists/:todo_list_id/todo_items/:todo_item_id/complete
helper method => complete_todo_list_todo_item_path(todo_list_object, todo_item_object)
如果您定义collection
而不是member
,那么它将不需要任何ID。