3

I am learning to use nested resources in rails. To keep it simple and reproducible I have setup a very simple blog app with two resources posts and comments. Most of the code has been generated by scaffold.

I have successfully modified post#show to display comments below each post, the link to Add New Comment also renders the new comment form. However I can not save the comments and get a routing error:

ActionController::RoutingError (No route matches [POST] "/posts/1/comments/new"

A comparison of the comment partial form

original/before nesting resources:

<%= form_with(model: comment, local: true) do |form| %>

modified/after nesting resources:

<%= form_with(url: new_post_comment_path, 
    scope: :comment, local: true) do |form| %>

I have pushed the code to github repo, with separate branches master without nested resources and nestedRoutes with nested resources. Will appreciate help of the community.

Note: Answers to Nested Resources w/ Rails 5.1 form_with did not work for me.

Imran Ali
  • 2,223
  • 2
  • 28
  • 41

1 Answers1

2

It looks like the url you are passing is the new_post_comment_path, when you probaby want your form to go the create path. Based on your routes I assume this looks like post_comments_path.

That’s why you get the error you see, there is no POST method defined for the new path (only GET).