2017-04-03 162 views
0

我建立像为什么会出现以下错误?

resources :blogs do 
    resources :comments 
    end 

当我访问以下

博客嵌套资源/ 1 /评论/ 2,我收到了错误

undefined method `comment_url' for #<#<Class:0x4173108>:0x43b45d8> 

这里是内部意见码\ 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

回答

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_commentscomments
  • new_blog_comment没有new_comment
  • ...

所以你正在寻找的帮手是blog_comment_url。此外,由于资源被嵌套,助手会想无论是评论和博客作为参数:

json.url blog_comment_url(comment.blog, comment, format: :json) 
+0

使用json.url blog_comment_url当我遇到错误未定义的局部变量或方法'博客”(博客,评论,格式::json) –

+0

我需要修改其他地方像show.json.jbuilder吗? json.partial! “评论/评论”,评论:@comment –

+0

我不确定的背景,所以我不得不猜测。也许你可以说'comment.blog'而不是'blog'。 –

相关问题