我在尝试向文章添加新评论时遇到下面的错误(NoMethodError),问题是它引用了未定义的方法`comments_path'我无法在代码文件中找到
请帮忙
注意: 我试图搜索这个错误,但我发现的结果不相关,问题是错误指的是我无法找到的东西。
错误如下所示:
评论#new中的NoMethodError 显示/home/abc/my_ruby_projects/myblog3/app/views/comments/_form.html.erb,其中第1行被提出:
未定义的方法`comments_path'对于#<#:0x007fb57888bf28> 你的意思是? font_path 提取的来源(第1行):
<%= form_with model: @comment do |form| %>
<% if comment.errors.any? %>
<div id="error_explanation">
<....>
<ul>
模板包含跟踪:app / views / comments / new.html.erb
Rails.root:/ home / abc /.../ myblog3
我为文章定义了嵌套路由&amp;评论如下:
resources :articles do
resources :comments
end
我的路线似乎正确,如下所示:
Prefix Verb URI Pattern Controller#Action
rails_admin /admin RailsAdmin::Engine
article_comments GET /articles/:article_id/comments(.:format) comments#index
POST /articles/:article_id/comments(.:format) comments#create
new_article_comment GET /articles/:article_id/comments/new(.:format) comments#new
edit_article_comment GET /articles/:article_id/comments/:id/edit(.:format) comments#edit
article_comment GET /articles/:article_id/comments/:id(.:format) comments#show
PATCH /articles/:article_id/comments/:id(.:format) comments#update
PUT /articles/:article_id/comments/:id(.:format) comments#update
DELETE /articles/:article_id/comments/:id(.:format) comments#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
答案 0 :(得分:0)
您的表单正在寻找可以发布评论更新的路线。
您的路线配置可能需要类似
的内容resources :comments
对列表路由的命令行调用现在将显示它正在寻找的comments_path
rake routes
然后你需要一个带有更新方法/动作的CommentsController来处理回发。
class CommentsController
def edit
end
def update
# save data
end
end
答案 1 :(得分:0)
如果您尝试在文章中添加评论,我想您有一个嵌套资源,其中Article
有很多comments
。现在,您的/config/routes.rb
会有一个条目:
resources :articles do
resources :comments
end
并假设accept_nested_attributes
模型中有/models.article.rb
。
现在在您看来,您的表单通常应该类似于:
<%= form_for [@article, @comment] do |f| %>
路由时我发现使用rails routes
命令很有用,但是一旦它们增长太多而不是将输出汇总到grep
我宁愿使用gem sextant in发展。