轨道布线中"member do"的功能



我不太确定我是否理解"成员操作"块在轨道路由中的目的

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

在上面的代码中,我知道todo_itemstodo_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。

最新更新