我是RoR的新手,我正尝试按照http://guides.rubyonrails.org/getting_started.html上的指南进行操作。我目前位于第6节第4点,但我一直被困在这里。

我收到以下错误:Articles#show中的NoMethodError

Showing /Users/riaanvanstraaten/rubyapps/blog/app/views/articles/show.html.erb where line #12 raised:

undefined method `article_comments_path' for #<#<Class:0x007fac016d6d20>:0x007fac01c05f30>
Extracted source (around line #12):
10                   
11 <h2>Add a comment:</h2>
12 <%= form_for([@article, @article.comments.build]) do |f| %>
13  <p>
14    <%= f.label :commenter %><br>
15    <%= f.text_field :commenter %>

我已经仔细检查了指南中的代码,但是看不到哪里出了问题。

我一直在寻找一些建议,并遵循了一些建议,但都没有取得积极的结果。 我有一篇帖子非常贴近我的问题,但是上述解决方案无法解决我当前的问题。 这是指向类似文章的链接: Articles#show.undefined方法“ article_comments_path”中的NoMethodError

这是使用的文件中的代码

show.html.erb

<p>
  <strong>Title:</strong>
  <%= @article.title %>
</p>

<p>
  <strong>Text:</strong>
  <%= @article.text %>
</p>

<h2>Add a comment:</h2>
<%= form_for([@article, @article.comments.build]) do |f| %>
  <p>
    <%= f.label :commenter %><br>
    <%= f.text_field :commenter %>
  </p>
  <p>
    <%= f.label :body %><br>
    <%= f.text_area :body %>
  </p>
  <p>
    <%= f.submit %>
  </p>
<% end %>

<%= link_to 'Back', articles_path %> |
<%= link_to 'Edit', edit_article_path(@article) %>

comments_controller.html.erb

class CommentsController < ApplicationController
  def create
    @article = Article.find(params[:article_id])
    @comment = @article.comments.create(comment_params)
    redirect_to article_path(@article)
  end

  private
    def comment_params
      params.require(:comment).permit(:commenter, :body)
    end
end

的routes.rb

Rails.application.routes.draw do

    resources :articles do
        resources :commments
    end
end

这是我的“耙路”输出

               Prefix Verb   URI Pattern                                        Controller#Action
    article_commments GET    /articles/:article_id/commments(.:format)          commments#index
                      POST   /articles/:article_id/commments(.:format)          commments#create
 new_article_commment GET    /articles/:article_id/commments/new(.:format)      commments#new
edit_article_commment GET    /articles/:article_id/commments/:id/edit(.:format) commments#edit
     article_commment GET    /articles/:article_id/commments/:id(.:format)      commments#show
                      PATCH  /articles/:article_id/commments/:id(.:format)      commments#update
                      PUT    /articles/:article_id/commments/:id(.:format)      commments#update
                      DELETE /articles/:article_id/commments/:id(.:format)      commments#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

怎么了? 我从网站复制并粘贴了代码,以查看我做错了什么,但仍然无法解决问题。

在此先感谢您的帮助!

#1楼 票数:2 已采纳

您的routes.rb有一个错字。 您的单词注释中有3 m字母,而不是2个:

Rails.application.routes.draw do
  resources :articles do
    resources :commments
  end
end

  ask by translate from so

未解决问题?本站智能推荐:

1回复

如何调试“Articles#show中的NoMethodError”?

我试图通过Ruby on Rails创建迷你博客,并且试图在显示页面上添加评论区域。 错误日志 /app/views/articles/show.html.erb 我尝试在使用.build而不是.new编写注释代码 /app/controllers/comments_contro
3回复

遵循入门指南中的PostsController#create中的NoMethodError

我是Rails的新手,因此我正在遵循入门指南,可以在这里找到: http : //edgeguides.rubyonrails.org/getting_started.html和此处: http : //guides.rubyonrails.org/getting_started.html,但是
2回复

Articles#show中的ArgumentError

我正在使用Jumpstartlab博客教程。 当我运行服务器并且想要打开文章时,出现以下错误: _form.html.erb comments_controller.rb 我试图将代码与本教程的github存储库进行比较,但没有帮助。 该教程是为Rails 3.x准备的,而我正在
3回复

对于Rails来说是非常新的东西,并且遵循“入门指南”(创建博客)中的destroy方法给了我一个错误

我已经阅读了很多有关此问题的SO帖子和Team Tree House帖子,但是还没有解决。 当我单击“删除”时,它告诉我“找不到TodoItemsController的动作“显示”” 根据一些答复,我尝试了以下方法: 确保gem'jquery-rails'位于gemfile中,并且j
1回复

遵循RoR指南更改路线时出错

我在5.3.2节中遇到问题,您正在将路由从..static_pages/help更改为../help等,以获取帮助,联系方式和关于页面。 那三个很好。 但是,当我输入主页的超链接时,它不会出现。 运行bundle exec时没有错误 。 即使我单击页脚和页眉上的链接,它们也可以正常工
3回复

#show中的NoMethodError

我正在使用有关Rails入门的教程http://tutorials.jumpstartlab.com/projects/blogger.html 我已经完成了该教程,现在我正在使用创建的学校作业站点,我只想在db / migrate / 20161005160810_create_artic
1回复

如何在ROR中解决NoMethodError

我有一个登录页面,我想通过提交电子邮件ID和密码进行登录。但是当我输入正确的电子邮件ID和密码时,出现以下错误。 错误: 提取的源(第6行附近): Rails.root: c:/Site/loginuser 我在下面给出了我所有的代码片段。 在app / views / us
2回复

ProfilesController#show中的NoMethodError

我正在使用angular和rails,但似乎无法让angular应用程序在我的应用程序内部运行。 我正在使用Ruby 2.1.1和Rails 4.1 就在今天,解决了这个错误,我想我已经很清楚了: angular.module('Waiting', [ 'ngRoute', 'ng