我正在做两个表单,一个用于创建,一个用于编辑创作形式很棒编辑表单生成此错误
No route matches [PATCH] "/admin/posts/14/edit"
在形式上,我想问题是“补丁”我修改了“edit”和url admin_posts_path,就像“create”表单一样,但这会产生一个新项,而不是编辑当前项这是我在这部分的rake路线
admin_posts GET /admin/posts(.:format) admin/posts#index
POST /admin/posts(.:format) admin/posts#create
new_admin_post GET /admin/posts/new(.:format) admin/posts#new
edit_admin_post GET /admin/posts/:id/edit(.:format) admin/posts#edit
admin_post GET /admin/posts/:id(.:format) admin/posts#show
PUT /admin/posts/:id(.:format) admin/posts#update
DELETE /admin/posts/:id(.:format)
这是形式或者至少是重要的部分
<%= form_for :post, url: edit_admin_post_path(@post),:html => { :multipart => true }, method: :patch do |f| %>
最佳答案
edit
操作只响应GET请求实际的更新是在update
操作中完成的,该操作响应PUT(如果使用Rails 4,则为PATCH)。
您的编辑表单应以以下内容开头:
<%= form_for :post, url: admin_post_path(@post),:html => { :multipart => true }, method: :put do |f| %>
您还可以将其简化为:
<%= form_for @post, html: { multipart: true } do |f| %>
这将自动为现有记录设置表单动作到
PUT admin/posts/:id
,并且将新记录设置为POST admin/posts
。关于ruby-on-rails - Routes.rb编辑表单重定向失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20592941/