我正在做两个表单,一个用于创建,一个用于编辑创作形式很棒编辑表单生成此错误

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/

10-12 12:31
查看更多