帖子#show中的Ruby on Rails NoMethodError

时间:2014-06-03 18:39:47

标签: ruby-on-rails ruby

我一直在尝试根据此link编写一个网络博客应用程序。我得到了一个 帖子中的Ruby on Rails NoMethodError#当我点击帖子时显示错误。

错误说明:"undefined method post_comments_path" <{1}}

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

<%= form_for [@post, Comment.new] do |f| %>

使用部分:

 <p id="notice"><%= notice %></p>

 <%= render :partial => @post %>

 <%= link_to 'Edit', edit_post_path(@post) %> |
 <%= link_to 'Back', posts_path %>

 <h2>Comments</h2>
 <div id="comments">
  <%= render :partial => @post.comments %>
 </div>

<%= form_for [@post, Comment.new] do |f| %>
  <p>
    <%= f.label :body, "New comment" %><br/>
    <%= f.text_area :body %>
  </p>
  <p><%= f.submit "Add comment" %></p>
<% end %>

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

<%= div_for comment do %>
  <p>
    <strong>
      Posted <%= time_ago_in_words(comment.created_at) %> ago
    </strong>
    <br/>
    <%= comment.body %>
  </p>
<% end %>

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

QuickBlog::Application.routes.draw do
  resources :posts do
    resources :comments, :only => [:create]
  end

  # root :to => 'welcome#index'
end

任何有关如何解决此问题的帮助都将非常感激,因为我没有找到与错误相关的其他页面。

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

Rails.application.routes.draw do
  resources :comments
  resources :posts

  devise_for :users
  root "pages#home"
  get "about" => "pages#about"
end

我在终端收到错误:

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 `<top (required)>': uninitialized constant QuickBlog (NameError)

1 个答案:

答案 0 :(得分:3)

将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