post#show中的Ruby on Rails NoMethodError

我一直试图根据此链接编写一个Web博客应用程序。 当我点击post时,我在post中显示Ruby on Rails NoMethodError#show error。

错误状态:行上的"undefined method post_comments_path"

这是在我的app / views / posts / show.html.erb脚本中。 该脚本如下:

  

@post %> |

Comments

@post.comments %>


部分:

  

Posted ago

我相信虽然问题可能出在我的routes.rb文件中。 该教程声明:

 QuickBlog::Application.routes.draw do resources :posts do resources :comments, :only => [:create] end # root :to => 'welcome#index' end 

但我无法使用此配置加载我的服务器。 相反,我的路线文件是:

 Rails.application.routes.draw do resources :comments resources :posts devise_for :users root "pages#home" get "about" => "pages#about" end 

任何有关如何解决这个问题的帮助将非常感激,因为我没有发现另一个页面与错误有关的类似问题。

当我将routes.rb文件更新为与教程相同时,它如下所示:

 QuickBlog::Application.routes.draw do resources :posts do resources :comments, :only => [:create] end # root :to => 'welcome#index' devise_for :users root "pages#home" get "about" => "pages#about" end 

我在终端收到错误:

 routes.rb:1:in `': uninitialized constant QuickBlog (NameError) 

我的评论控制器是:

 class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.create!(comment_params) redirect_to @post end private def comment_params params.require(:comment).permit(:body) end end 

将routes.rb文件更新为此文件。 您从教程中使用routes.rb获得的错误是因为它使用的是应用程序名称而不是Rails.application.routes.draw 。 这在Rails 4.1中发生了变化。

 Rails.application.routes.draw do resources :posts do resources :comments, :only => [:create] end # root :to => 'welcome#index' end