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。当我到我的电脑上时,我会稍微修正拼写错误和结构。
我的应用程序按预期工作,但我对嵌套路由有疑问。在我的路线文件中我有
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。当我到我的电脑上时,我会稍微修正拼写错误和结构。