我正在构建一个像
这样的嵌套资源 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总是如此 &#34; URL&#34;:&#34; http://localhost:3000/blogs/1/comments.json&#34;
我想得到类似的东西 &#34; URL&#34;:&#34; http://localhost:3000/blogs/1/comments/2.json&#34;
答案 0 :(得分:1)
如果您执行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)