为什么会出现以下错误?
Why the following error?
我正在构建一个嵌套资源,例如
resources :blogs do
resources :comments
end
当我访问以下内容时
blogs/1/comments/2,我收到错误
undefined method `comment_url' for #<#<Class:0x4173108>:0x43b45d8>
这里是里面的代码views\comments_comment.json.jbuilder
json.url comment_url(comment, format: :json)
如何修复?
根据建议进行编辑
json.url blog_comments_url(comment.blog, comment, format: :json)
然而 URl 我得到的总是
"url":"http://localhost:3000/blogs/1/comments.json"
我想得到类似的东西
"url":"http://localhost:3000/blogs/1/comments/2.json"
如果您执行 rake routes
,您应该会看到如下内容:
blog_comments GET /blogs/:blog_id/comments(.:format) comments#index
POST /blogs/:blog_id/comments(.:format) comments#create
new_blog_comment GET /blogs/:blog_id/comments/new(.:format) comments#new
edit_blog_comment GET /blogs/:blog_id/comments/:id/edit(.:format) comments#edit
blog_comment GET /blogs/:blog_id/comments/:id(.:format) comments#show
PATCH /blogs/:blog_id/comments/:id(.:format) comments#update
PUT /blogs/:blog_id/comments/:id(.:format) comments#update
DELETE /blogs/:blog_id/comments/:id(.:format) comments#destroy
blogs GET /blogs(.:format) blogs#index
POST /blogs(.:format) blogs#create
new_blog GET /blogs/new(.:format) blogs#new
edit_blog GET /blogs/:id/edit(.:format) blogs#edit
blog GET /blogs/:id(.:format) blogs#show
PATCH /blogs/:id(.:format) blogs#update
PUT /blogs/:id(.:format) blogs#update
DELETE /blogs/:id(.:format) blogs#destroy
第一列的路径助手名称没有 _url
或 _path
后缀。
您的 :comments
资源嵌套在您的 :blogs
资源中,因此助手名称也嵌套:
blog_comments
不是 comments
new_blog_comment
不是 new_comment
- ...
所以您要找的帮手是blog_comment_url
。此外,由于资源是嵌套的,帮助程序将评论和博客都作为参数:
json.url blog_comment_url(comment.blog, comment, format: :json)
我正在构建一个嵌套资源,例如
resources :blogs do
resources :comments
end
当我访问以下内容时
blogs/1/comments/2,我收到错误
undefined method `comment_url' for #<#<Class:0x4173108>:0x43b45d8>
这里是里面的代码views\comments_comment.json.jbuilder
json.url comment_url(comment, format: :json)
如何修复?
根据建议进行编辑
json.url blog_comments_url(comment.blog, comment, format: :json)
然而 URl 我得到的总是 "url":"http://localhost:3000/blogs/1/comments.json"
我想得到类似的东西 "url":"http://localhost:3000/blogs/1/comments/2.json"
如果您执行 rake routes
,您应该会看到如下内容:
blog_comments GET /blogs/:blog_id/comments(.:format) comments#index
POST /blogs/:blog_id/comments(.:format) comments#create
new_blog_comment GET /blogs/:blog_id/comments/new(.:format) comments#new
edit_blog_comment GET /blogs/:blog_id/comments/:id/edit(.:format) comments#edit
blog_comment GET /blogs/:blog_id/comments/:id(.:format) comments#show
PATCH /blogs/:blog_id/comments/:id(.:format) comments#update
PUT /blogs/:blog_id/comments/:id(.:format) comments#update
DELETE /blogs/:blog_id/comments/:id(.:format) comments#destroy
blogs GET /blogs(.:format) blogs#index
POST /blogs(.:format) blogs#create
new_blog GET /blogs/new(.:format) blogs#new
edit_blog GET /blogs/:id/edit(.:format) blogs#edit
blog GET /blogs/:id(.:format) blogs#show
PATCH /blogs/:id(.:format) blogs#update
PUT /blogs/:id(.:format) blogs#update
DELETE /blogs/:id(.:format) blogs#destroy
第一列的路径助手名称没有 _url
或 _path
后缀。
您的 :comments
资源嵌套在您的 :blogs
资源中,因此助手名称也嵌套:
blog_comments
不是comments
new_blog_comment
不是new_comment
- ...
所以您要找的帮手是blog_comment_url
。此外,由于资源是嵌套的,帮助程序将评论和博客都作为参数:
json.url blog_comment_url(comment.blog, comment, format: :json)