我认为这是一个奇怪的路由错误,我似乎无法解决。我正在使用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} %>
如果我从表单中取出上述行,则编辑和新表单都可以正常工作!?
答案 0 :(得分:0)
嘿,您列出的路线显示他们希望PATCH或PUT请求更新&#39;所以你必须将方法改为&#39; PUT&#39;而不是&#34; POST&#34;为了正常工作。在您的视图中显示表单,我将更详细地显示您要更改的内容。