【问题标题】:Route not working - very confusing路线不起作用 - 非常混乱
【发布时间】:2013-01-26 22:13:00
【问题描述】:

我理解路由的概念,但有时它们无法正常工作。在这种特定情况下,我试图让编辑项目的路径正常工作,但我收到以下错误消息:

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 %>

怎么了?运行 rake routes

时会找到路由
 edit_project GET    /projects/:id/edit(.:format)       projects#edit

【问题讨论】:

  • 你为什么要添加两次projects 路由。第二个不需要(即)resources :projects
  • 感谢您指出这一点!

标签: ruby-on-rails ruby-on-rails-3 model-view-controller controller routes


【解决方案1】:

仔细查看错误信息:

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

它实际上是使用动词POST 而不是GET。这就是它找不到路径的原因。

您正在使用生成表单的button_to 助手,默认方法是POST

您只需将button_to 更改为link_to

【讨论】:

  • 好的,现在没有。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2016-11-19
  • 1970-01-01
  • 2019-11-06
  • 2020-01-02
  • 2013-01-15
  • 1970-01-01
相关资源
最近更新 更多