我一直在尝试根据此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)
答案 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