undefined方法`comments_path'我无法在代码文件

时间:2017-09-02 00:12:43

标签: ruby-on-rails ruby

我在尝试向文章添加新评论时遇到下面的错误(NoMethodError),问题是它引用了未定义的方法`comments_path'我无法在代码文件中找到

请帮忙

注意: 我试图搜索这个错误,但我发现的结果不相关,问题是错误指的是我无法找到的东西。

错误如下所示:

评论#new中的NoMethodError 显示/home/abc/my_ruby_projects/myblog3/app/views/comments/_form.html.erb,其中第1行被提出:

未定义的方法`comments_path'对于#<#:0x007fb57888bf28> 你的意思是? font_path 提取的来源(第1行):

<%= form_with model: @comment do |form| %>
  <% if comment.errors.any? %>
    <div id="error_explanation">
      <....>
      <ul>

模板包含跟踪:app / views / comments / new.html.erb

Rails.root:/ home / abc /.../ myblog3

我为文章定义了嵌套路由&amp;评论如下:

  resources :articles do
    resources :comments
  end

我的路线似乎正确,如下所示:

          Prefix Verb   URI Pattern                                       Controller#Action
         rails_admin        /admin                                            RailsAdmin::Engine
    article_comments GET    /articles/:article_id/comments(.:format)          comments#index
                     POST   /articles/:article_id/comments(.:format)          comments#create
 new_article_comment GET    /articles/:article_id/comments/new(.:format)      comments#new
edit_article_comment GET    /articles/:article_id/comments/:id/edit(.:format) comments#edit
     article_comment GET    /articles/:article_id/comments/:id(.:format)      comments#show
                     PATCH  /articles/:article_id/comments/:id(.:format)      comments#update
                     PUT    /articles/:article_id/comments/:id(.:format)      comments#update
                     DELETE /articles/:article_id/comments/:id(.:format)      comments#destroy
            articles GET    /articles(.:format)                               articles#index
                     POST   /articles(.:format)                               articles#create
         new_article GET    /articles/new(.:format)                           articles#new
        edit_article GET    /articles/:id/edit(.:format)                      articles#edit
             article GET    /articles/:id(.:format)                           articles#show
                     PATCH  /articles/:id(.:format)                           articles#update
                     PUT    /articles/:id(.:format)                           articles#update
                     DELETE /articles/:id(.:format)                           articles#destroy

2 个答案:

答案 0 :(得分:0)

您的表单正在寻找可以发布评论更新的路线。

您的路线配置可能需要类似

的内容
resources :comments

对列表路由的命令行调用现在将显示它正在寻找的comments_path

rake routes

然后你需要一个带有更新方法/动作的CommentsController来处理回发。

class CommentsController
  def edit
  end

  def update
    # save data
  end
end

答案 1 :(得分:0)

如果您尝试在文章中添加评论,我想您有一个嵌套资源,其中Article有很多comments。现在,您的/config/routes.rb会有一个条目:

resources :articles do
  resources :comments
end

并假设accept_nested_attributes模型中有/models.article.rb

现在在您看来,您的表单通常应该类似于:

<%= form_for [@article, @comment] do |f| %>

路由时我发现使用rails routes命令很有用,但是一旦它们增长太多而不是将输出汇总到grep我宁愿使用gem sextant in发展。