路由错误更新/创建记录

时间:2016-07-12 14:40:05

标签: ruby-on-rails ruby-on-rails-4 routes

我认为这是一个奇怪的路由错误,我似乎无法解决。我正在使用Rails 4.2.6并为客户生成脚手架。我能够查看客户列表,但是当我编辑客户时出现错误

No route matches [POST] "/customers/49"

尽管我确实改变了我的路线,所以一切都是脚手架创造的:

  resources :customers do
    resources :comments, only: [:new, :create, :edit, :update]
  end

但我也尝试使用脚手架默认设置并收到相同的错误。

这些是客户的路线:

               customers GET    /customers(.:format)                                customers#index
                         POST   /customers(.:format)                                customers#create
            new_customer GET    /customers/new(.:format)                            customers#new
           edit_customer GET    /customers/:id/edit(.:format)                       customers#edit
                customer GET    /customers/:id(.:format)                            customers#show
                         PATCH  /customers/:id(.:format)                            customers#update
                         PUT    /customers/:id(.:format)                            customers#update
                         DELETE /customers/:id(.:format)                            customers#destroy

“编辑”页面生成的HTML显示它是一个帖子请求

<form class="edit_customer" id="edit_customer_49" action="/customers/49" accept-charset="UTF-8" method="post">

和“新”页面相同

<form class="new_customer" id="new_customer" action="/customers" accept-charset="UTF-8" method="post">

在大多数情况下,一切都是脚手架产生的,所以我不知道为什么我会收到错误。为什么使用POST生成的HTML以及如何使其正常工作?

感谢您帮助Rails新手。

更新 好的,在我的模型中我有

CUSTOMER_TYPE = ["A", "B"]

在我的编辑/新表格中,我有这个:

  <%= f.label :customer_type %>
  <%= f.select :customer_type, Customer::CUSTOMER_TYPE, {include_blank: true}, {index: nil} %>

如果我从表单中取出上述行,则编辑和新表单都可以正常工作!?

1 个答案:

答案 0 :(得分:0)

嘿,您列出的路线显示他们希望PATCH或PUT请求更新&#39;所以你必须将方法改为&#39; PUT&#39;而不是&#34; POST&#34;为了正常工作。在您的视图中显示表单,我将更详细地显示您要更改的内容。