我使用
生成简单的pubs
_edit表单
= form_for @pub do |f|
- if @pub.errors.any?
-# fields
获取/ldc/pubs/1/edit
(ldc - >命名空间)
表单标签获得POST(?):
<form id="edit_ldc_pub_1" class="edit_ldc_pub" method="post" action="/ldc/pubs/1" accept-charset="UTF-8">
一切都很好,但没有路由:
... others
DELETE /ldc/pubowners/:id(.:format) ldc/pubowners#destroy
ldc_pubs GET /ldc/pubs(.:format) ldc/pubs#index
POST /ldc/pubs(.:format) ldc/pubs#create
new_ldc_pub GET /ldc/pubs/new(.:format) ldc/pubs#new
edit_ldc_pub GET /ldc/pubs/:id/edit(.:format) ldc/pubs#edit
ldc_pub GET /ldc/pubs/:id(.:format) ldc/pubs#show
PUT /ldc/pubs/:id(.:format) ldc/pubs#update
DELETE /ldc/pubs/:id(.:format) ldc/pubs#destroy
不应该有错误吗?
这不是问题,因为PUT和POST在某种程度上是多余的,包括存在:id
但我可以依靠吗?为什么要渲染一个POST?
答案 0 :(得分:0)
最后一个问题:
呈现“post”是因为你在表单字段中只有GET和POST作为选项。
标题问题:
你缺少的是有一个隐藏的值,例如,
<input name="_method" type="hidden" value="put" />
由form_for
助手呈现。 Rails使用_method
的值来查找正确的路由。
浏览器中的HTTP方法是一个POST,但Rails使用_method
(如果存在)。