Rails - 没有路由匹配{:action =>"new",:controller =>"comments"}

ZMo*_*rek 3 routes new-operator ruby-on-rails-3

尝试了一切,似乎找不到问题.

错误 localhost:3000

No route matches {:action=>"new", :controller=>"comments"}
Run Code Online (Sandbox Code Playgroud)

服务器出错

Rendered tasks/show.html.erb within layouts/application (134.7ms)
Completed 500 Internal Server Error in 187ms

ActionView::Template::Error (No route matches {:action=>"new", :controller=>"comments"}):
    66: 
    67: <br />
    68: 
    69: <%= link_to 'New Comment', new_task_comment_path %>
    70: 
    71: 
    72: 
  app/views/tasks/show.html.erb:69:in `_app_views_tasks_show_html_erb___1205853643464254853_2489437560'
  app/controllers/tasks_controller.rb:18:in `show'
Run Code Online (Sandbox Code Playgroud)

Routes.rb 有我的资源嵌套

  resources :tasks do
    resources :comments    
  end
Run Code Online (Sandbox Code Playgroud)

和我的相关部分 $rake routes

$ rake routes
    task_comments GET    /tasks/:task_id/comments(.:format)          {:action=>"index", :controller=>"comments"}
                  POST   /tasks/:task_id/comments(.:format)          {:action=>"create", :controller=>"comments"}
 new_task_comment GET    /tasks/:task_id/comments/new(.:format)      {:action=>"new", :controller=>"comments"}
edit_task_comment GET    /tasks/:task_id/comments/:id/edit(.:format) {:action=>"edit", :controller=>"comments"}
     task_comment GET    /tasks/:task_id/comments/:id(.:format)      {:action=>"show", :controller=>"comments"}
                  PUT    /tasks/:task_id/comments/:id(.:format)      {:action=>"update", :controller=>"comments"}
                  DELETE /tasks/:task_id/comments/:id(.:format)      {:action=>"destroy", :controller=>"comments"}
Run Code Online (Sandbox Code Playgroud)

我在这里可以缺少什么?

bri*_*ker 19

你没有传递它task_id:

new_task_comment_path(@task.id)
Run Code Online (Sandbox Code Playgroud)

  • 适合所有人的升船. (3认同)