2017-04-03 3 views
0

私は、次の次のエラーはなぜですか?

ブログ/ 1 /コメント/ 2を訪問したときに、私はここでエラーに

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

を受け

resources :blogs do 
    resources :comments 
    end 

のようなネストされたリソースは、ビュー内のコードで構築しています\ comments_comment.json.jbuilder

json.url comment_url(comment, format: :json) 

修正方法?

提案につき編集

json.url blog_comments_url(comment.blog, comment, format: :json) 

私が手URLは ように常にあるしかし "URL":私は "URL" のようなものを取得したいと思い、 "http://localhost:3000/blogs/1/comments.json "

:" 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_commentsないcomments
  • 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

私は文脈がわからないので、私は推測しなければならなかった。たぶんあなたは 'blog'の代わりに' comment.blog'と言うことができます。 –

関連する問題