rieles que estructuran rutas / controlador / vistas para recursos anidados

Tengo una aplicación de rieles con la siguiente estructura:

user has_many posts post has_many post_comments post_comment has_many comment_replies

Estoy planeando usar las siguientes rutas para evitar el anidamiento profundo.

resources :posts do
  resources :post_comments, module: :posts
end

resources :comments do 
  resources :comment_replies, module: :post_comments #is this module a good choice?
end

Esto da la siguiente estructura de controlador

post_comments      GET    /posts/:post_id/comments(.:format)  posts/comments#index
                   POST   /posts/:post_id/comments(.:format)                       posts/comments#create
new_post_comment   GET    /posts/:post_id/comments/new(.:format)                   posts/comments#new
 edit_post_comment GET    /posts/:post_id/comments/:id/edit(.:format)              posts/comments#edit
      post_comment GET    /posts/:post_id/comments/:id(.:format)                   posts/comments#show
                   PATCH  /posts/:post_id/comments/:id(.:format)                   posts/comments#update
                   PUT    /posts/:post_id/comments/:id(.:format)                   posts/comments#update
                   DELETE /posts/:post_id/comments/:id(.:format)                   posts/comments#destroy


comment_repiles     GET    /comments/:comment_id/repiles(.:format)                  comments/repiles#index
                    POST   /comments/:comment_id/repiles(.:format)                  comments/repiles#create
 new_comment_repile GET    /comments/:comment_id/repiles/new(.:format)              comments/repiles#new
edit_comment_repile GET    /comments/:comment_id/repiles/:id/edit(.:format)         comments/repiles#edit
     comment_repile GET    /comments/:comment_id/repiles/:id(.:format)              comments/repiles#show
                    PATCH  /comments/:comment_id/repiles/:id(.:format)              comments/repiles#update
                    PUT    /comments/:comment_id/repiles/:id(.:format)              comments/repiles#update
                    DELETE /comments/:comment_id/repiles/:id(.:format)              comments/repiles#destroy

Mi problema es con la estructura de las carpetas.

Para los controladores: significa que puse elposts_controller en la carpeta principal y elpost_comments_controller entra enposts carpeta. Hasta ahora está claro. Pero paracomment_replies Debería ponerlo en elcomment_replies carpeta que está totalmente separada de dondepost_comments_controller puede ser encontrado.

Para vistas: tengo uncreate.js.erb paraposts en la carpeta 'post'. tengo uncreate.js.erb parapost_comment en elposts/post_comments carpeta. De acuerdo con mis rutas, debería poner elcreate.js.erb paracomment_replies en elpost_comments/comment_replies folder. Pero esto parece ser contraintuitivo nuevamente al igual que el ejemplo del controlador.

¿Cuál es la convención de rieles / solución común en este caso? Por cierto. No quiero mostrar comentarios o respuestas por separado de su publicación.

ACTUALIZAR

posts_controller

def index
  ....
  @post_comments = @post.post_comments #showing all comments
  @post_comment = PostComment.new #new comment via js
  respond_to do |format|
    format.js
  end
end

controlador post_comments

def create
  @post = Post.find(params[:id])
  @post_comment = @post.post_comments.build(post_comment_params)
  @post_comment.save!
end

Respuestas a la pregunta(0)

Su respuesta a la pregunta