0

我理解路线的概念,但现在,然后他们只是不工作,因为他们应该。在这种特定的情况下,我试图让路线编辑一个项目的工作,但我得到了以下错误消息:路线不工作 - 非常容易混淆

No route matches [POST] "/projects/8/edit" 

的routes.rb:

Ampta::Application.routes.draw do 
    get "home/index" 

    resources :sessions, only: [:new, :create, :destroy] 

    match '/signin', to: 'sessions#new' 
    match '/signout', to: 'sessions#destroy', via: :delete 

    resources :projects do 
    collection do 
     get "manage" 
    end 
    end 

    resources :projects 
    resources :tickets 
    resources :projects_users 
    resources :users 

    root :to => 'home#index' 

end 

控制器:

class ProjectsController < ApplicationController 
    def edit 
     // no code yet 
    end 
end 

查看:

<% @users_projects.each do |project| %> 
    <%= link_to project.title, project_path(project), :class => "manage_project_link" %> 
    <%= button_to "Edit", edit_project_path(project), :class => "btn edit_button" %> 
<% end %> 

出了什么问题?这条路线是可以找到更紧密地运行耙路线

edit_project GET /projects/:id/edit(.:format)  projects#edit 
+0

你为什么要添加'项目'路线两次..第二个不需要(即)'资源:项目' – codeit 2013-02-11 18:36:48

+0

感谢您指出! – dracula 2013-02-11 19:06:53

回答

3

看时的错误消息:

No route matches [POST] "/projects/8/edit"

它实际上是用动词POST而不是GET。这就是为什么它没有找到路线。

您正在使用生成表单的button_to帮助程序,默认方法为POST

您只需要将button_to更改为link_to

+0

好吧,现在没有。非常感谢! – dracula 2013-02-11 18:33:41