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