Rails 嵌套路由前缀动词问题

Rails nested routing prefix verb issue

我的应用程序按预期工作,但我对嵌套路由有疑问。在我的路线文件中我有

resources :lists do
    resources :items
end

当我 运行 rake:routes 我得到(缩短以保存 space)

list_items     GET    /lists/:list_id/items(.:format)          items#index
               POST   /lists/:list_id/items(.:format)          items#create
new_list_item  GET    /lists/:list_id/items/new(.:format)      items#new
edit_list_item GET    /lists/:list_id/items/:id/edit(.:format) items#edit
list_item      GET    /lists/:list_id/items/:id(.:format)      items#show

当我遵循教程或其他 material 时,他们的 'Prefix Verb' 只会有 action_item(即new_item) 并且表格只有

form_for @item

而不是我拥有的

form_for [@list, @item]

我想知道我是不是遗漏了什么,或者做错了什么。感谢任何帮助或信息。

听起来教程没有使用嵌套路由。在您的路线中,您正在定义列表资源中的项目资源(资源是根据 RESTful 路线定义的)

所以当

form_for [@list, @item]

used 它知道要生成表单,它会识别出它是一个嵌套路由,并且路由的路由会扩展到类似 '/lists/:list_id/items/:item_id ' 它需要两个 ID 才能知道到 POST 的哪条路线。

如果教程有

form_for [@item]

这不是嵌套路线,所以路线很可能

资源:项目 并且会生成没有列表的路由(即 new_item => '/item/item_id') 这就是为什么您的路线将列表包含在前缀动词中的原因。

我现在正在 phone。当我到我的电脑上时,我会稍微修正拼写错误和结构。