如何在rails中使用嵌套资源时修改form_with

时间:2017-11-26 13:49:27

标签: ruby-on-rails rails-routing nested-resources

我正在学习在rails中使用嵌套资源。为了保持简单和可重复性,我设置了一个非常简单的博客应用程序,其中包含两个资源postscomments。大多数代码都是由脚手架生成的。

我已成功修改post#show以在每个帖子下方显示comments,指向Add New Comment的链接也会呈现new comment表单。但是我无法保存评论并收到路由错误:

  

ActionController :: RoutingError(没有路由匹配[POST]" / posts / 1 / comments / new"

评论部分表格的比较

原始/嵌套资源之前:

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

修改/嵌套资源后:

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

我已将代码推送到github repo,其中单独的分支master没有嵌套资源,nestedRoutes具有嵌套资源。将会感谢社区的帮助。

注意:Nested Resources w/ Rails 5.1 form_with的答案对我不起作用。

1 个答案:

答案 0 :(得分:2)

当你想要你的表单进入创建路径时,看起来你传递的网址是new_post_comment_path。根据您的路线,我认为这看起来像post_comments_path

这就是为什么你得到你看到的错误,没有为new路径定义的POST方法(只有GET)。